in reply to Avoiding regex backtracking
In general while backtracking is good to know about, most of the time it is not a problem. The exceptions are cases like this:
As for the optimization you mention, for ones which do not use "special features" (eg backreferences within the match, lookaheads, etc) it is possible to execute any match in guaranteed time. Perl does not, however, do this...foreach my $i (1..40) { slow_match($i); } sub slow_match { my $count = shift || 20; my $str = ("yada " x $count) . "yad"; print "Trying to match $count iterations.."; die "Huh?" if $str =~ /^(\s*yada\s*)*$/; print "Done\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re (tilly) 1: Avoiding regex backtracking
by blakem (Monsignor) on Mar 13, 2002 at 02:52 UTC | |
by tilly (Archbishop) on Mar 13, 2002 at 03:37 UTC |