Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: regex backtracking question

by trizen (Hermit)
on Apr 24, 2014 at 10:59 UTC ( #1083562=note: print w/ replies, xml ) Need Help??


in reply to regex backtracking question

You can think of any regular expression in term of some nested for loops.

Please, consider:

for my $i (0 .. $eos) { for my $j ($min .. $max) { last if $j > $eos-$i; print substr($str, $i, $j),"\n"; } }
The following variables specifies the meaning of "ABCDEF" =~ /(\w{2,}?)(?{print "$1\n"})(?!)/;
my $min = 2; # minimum match length my $max = 32767; # maximum match length my $str = "ABCDEF"; my $eos = length($str);

Using the same nested for loops, we have another specification for "ABCDEF" =~ /([A-Z]{3})(?{print "$1\n"})(?!)/;
my $min = 3; # minimum match length my $max = 3; # maximum match length my $str = "ABCDEF"; my $eos = length($str);

By executing the code, it gives us the same output as the corresponding regular expressions do. I hope this will give you a basic intuition on how backtracking works.


Comment on Re: regex backtracking question
Select or Download Code
Re^2: regex backtracking question
by aeqr (Novice) on Apr 24, 2014 at 14:41 UTC
    Thanks for the additional info, I see why it is different now.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1083562]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (10)
As of 2015-07-07 12:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls