in reply to Re^3: Integrating match counts into regex matching
in thread Integrating match counts into regex matching

Why? I can't think of a situation where omitting the lookahead and the lookbehind will change the answer.

Nevermind, I didn't realize this was a new thread with a different question.

  • Comment on Re^4: Integrating match counts into regex matching

Replies are listed 'Best First'.
Re^5: Integrating match counts into regex matching
by BrowserUk (Patriarch) on Dec 19, 2008 at 08:54 UTC

    I'm not sure that it is a different question? Anyhow, my limited testing threw up one case where the negative lookbehind was necessary:

    With and without negative lookbehind:

    Perl> 'aaabb' =~ m[ (?{ local( $a, $b ) }) ( (?<!a) ( a (?{++$a}) )+ ( b (?{++$b}) )+ ) (?(?{ $a+1 == $b }) (?=) | (?!) ) ]x and print "'$1'";; Perl> 'aaabb' =~ m[ (?{ local( $a, $b ) }) ( ( a (?{++$a}) )+ ( b (?{++$b}) )+ ) (?(?{ $a+1 == $b }) (?=) | (?!) ) ]x and print "'$1'";; 'abb'

    A breif further test suggests that the negative lookahead may be unnecessary, but I threw it in on the basis that it would do no harm, and may catch a case I haven't thought to test. With a regex using closures, it's doubtful if it will slow things down noticably?


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.