in reply to A NOT in regular expressions

s/<%(?:[^%]+|%[^>])*%>/<%$new_stuff%>/;

Abigail

Replies are listed 'Best First'.
Re: Re: A NOT in regular expressions
by tilly (Archbishop) on May 14, 2003 at 08:34 UTC
    You get the string "<%replace here%%>but not here%>" wrong.
      You are quite right. I should have written:
      s/<%(?:[^%]+|%(?!>))*%>/<%$new%>/

      Abigail

        Ilya saved you.

        In older versions of Perl, or in other languages, the above would perform simply pathetically on something like:

        "<%aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaa"
        However Ilya's optimizations make it perform just fine in recent versions of Perl. :-)