Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re^3: tight loop regex optimization

by ikegami (Pope)
on Nov 02, 2011 at 05:29 UTC ( #935300=note: print w/ replies, xml ) Need Help??

in reply to Re^2: tight loop regex optimization
in thread tight loop regex optimization

I don't really grok the look-around assertion

Think of it as a subroutine call. The engine tries to match the sub pattern at the current location, but it current location doesn't change.

+------------ Matched at pos 0. | +-------- Matched at pos 1. | |+------- Matched at pos 2. | || +----- Matched at pos 1. | || |+---- Matched at pos 2. | || ||+--- Matched at pos 3. | || ||| v vv vvv 'abcd' =~ /a(?!BC)..d/ # Matches

Since the position on the outer regex isn't affected, replacements don't take what the sub expression matched into consideration.

my $s = 'abcd'; $s =~ s/a(?=bc)/x/; # xbcd my $s = 'aefg'; $s =~ s/a(?=bc)/x/; # abcd

The substitution pattern in your version has one less \05. Is that intentional?

Yes. One less \05 is being replaced, so one less \05 should be added.

I'm not familiar enough with this code or its expected output to really tell when it's working or when I might introduce a subtle bug somewhere

Then I guess the next order of business is to figure out the code and write test cases.

Comment on Re^3: tight loop regex optimization
Select or Download Code

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (13)
As of 2014-08-22 18:53 GMT
Find Nodes?
    Voting Booth?

    The best computer themed movie is:

    Results (163 votes), past polls