in reply to filtering folder path using regex.

#!/usr/bin/perl -l my $yo = 'C:/as/d/f/e/r/g/a/d/f/g/'; use File::Spec; print for File::Spec->splitpath($yo); warn $yo; print for File::Spec->splitdir($yo); die $yo; __END__ C: /as/d/f/e/r/g/a/d/f/g/ C:/as/d/f/e/r/g/a/d/f/g/ at - line 5. C: as d f e r g a d f g C:/as/d/f/e/r/g/a/d/f/g/ at - line 7.
Now onto the regex. Pay special attention to the ".+" explanation, and then choose a different quantifier(*?) add a modifier (namely "?").
use YAPE::Regex::Explain; die YAPE::Regex::Explain->new(qr/^(\w):\\(.+)\\?/)->explain; __END__ The regular expression: (?-imsx:^(\w):\\(.+)\\?) matches as follows: NODE EXPLANATION ---------------------------------------------------------------------- (?-imsx: group, but do not capture (case-sensitive) (with ^ and $ matching normally) (with . not matching \n) (matching whitespace and # normally): ---------------------------------------------------------------------- ^ the beginning of the string ---------------------------------------------------------------------- ( group and capture to \1: ---------------------------------------------------------------------- \w word characters (a-z, A-Z, 0-9, _) ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- : ':' ---------------------------------------------------------------------- \\ '\' ---------------------------------------------------------------------- ( group and capture to \2: ---------------------------------------------------------------------- .+ any character except \n (1 or more times (matching the most amount possible)) ---------------------------------------------------------------------- ) end of \2 ---------------------------------------------------------------------- \\? '\' (optional (matching the most amount possible)) ---------------------------------------------------------------------- ) end of grouping ----------------------------------------------------------------------
update: yuckyish (File::Spec rocks)
perl -le"print for split m{[:\\/]+}, shift, 3" C:\y\o\d\a C y o\d\a

MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
** The third rule of perl club is a statement of fact: pod is sexy.

Replies are listed 'Best First'.
Re: Re: filtering folder path using regex.
by blackadder (Hermit) on Jul 13, 2003 at 14:33 UTC
    WOW, the power of Perl "...it helps if you know what you are doing", I didn't know that there things like YAPE::Regex::Explain; to explain it all....Thanks.
      Thanks PodMaster.... Oh forget Regex, for what I need, File::Spec is really what I should use. This is magic.
Re: Re: filtering folder path using regex.
by barbie (Deacon) on Jul 14, 2003 at 09:14 UTC
    \\? '\' (optional (matching the most amount possible))

    Is that correct? I always understood '?' to mean exactly 0 or 1 occurances, '*' or '+' would be the most possible.

    --
    Barbie | Birmingham Perl Mongers | http://birmingham.pm.org/

      The question to ask yourself is: Is it incorrect? The answer is no.

      perlre says "? Match 1 or 0 times", which means optional (like YAPE::Regex::Explain says).

      Now, the extra "(matching the most amount possible)" comment may seem a bit misleading, but it's not wrong. Consider the re-pattern f?. It means match "f" optionally. Since "f" is fixed with, it'll always match the most amount possible. This may seem a bit silly, and may or may not be an unintended sideeffect of how YAPE::Regex::Explain works, but it's perfectly fine by me (if it is unintended, I don't think it's worth a workaround, if it's not, there is no issue).

      MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
      I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
      ** The third rule of perl club is a statement of fact: pod is sexy.

        It all comes down to interpretation and assumption. I just prefer explanations to be clear rather than a bit jagged at the edges. Anything that is open to misinterpretation most likely will be.

        If it works for you, thats fine. But it's worth bearing in mind that anyone new to the module may get mixed messages.

        --
        Barbie | Birmingham Perl Mongers | http://birmingham.pm.org/