Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://935300]
[Discipulus]: good thread LanX! I completely missed it

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (8)
As of 2018-03-19 11:40 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (239 votes). Check out past polls.