in reply to Regex Matching Query

What about this?

my $file = "TEST SHOW S01E01"; if(my ($show, $file) = $file =~ /(.*?)(\d+.*)/) { print "Show name: $show\n"; print "Show rest: $file\n"; }
A posting a day keeps Python away.

Replies are listed 'Best First'.
Re^2: Regex Matching Query
by ww (Archbishop) on Mar 26, 2013 at 15:02 UTC

    Unfortunately, the code in the direct parent (and similar offerings above) does not produce what I understand to be OP's intended result. Execution of the code in Re: Regex Matching Query goes like this:

    C:\> 1025454.pl Show name: TEST SHOW S Show rest: 01E01
    It's my understanding that all after the final space -- i.e., S01E01 -- is the desired output.

    So why is the regex a few degrees off plumb? As written the technical greediness of the death star in the first capture is mitigated by the trailing questionmark... but the second capture looks for a digit as its starting point, relegating the "S" to the first capture.

    Consider instead the elevated particularity of:

    if(my ($show, $file) = $file =~ /(.*?)\s([A-Z]\d+.*)/) { print "Show name: $show\n"; print "Show rest: $file\n"; }
    which outputs:
    Show name: TEST SHOW Show rest: S01E01
    Regexen entirely capable of biting BOTH an excess and an insufficiency of precision in their crafting.

    If you didn't program your executable by toggling in binary, it wasn't really programming!