http://www.perlmonks.org?node_id=1225322


in reply to Re: Where can I find more examples of use of Special Backtracking Control Verbs?
in thread Where can I find more examples of use of Special Backtracking Control Verbs?

\K is the basis for a variable length positive look behind assertion. The case discussed here implements a variable length negative look behind assertion, which in Perl must always be emulated in some way (ATM).


Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^3: Where can I find more examples of use of Special Backtracking Control Verbs?
by Eily (Prior) on Nov 06, 2018 at 22:58 UTC

    Ahem, yes. I failed to see that. Thanks pointing that out.

    On a completly far-fetched note, now that I think I understand the (*SKIP)(*FAIL) pattern, it seems to me that it only covers the subset of negative look behind assertions that do not come after any character has been matched. For example: /^(.{5})+(?<!ab*c)d/ (which is the same as matching /d(?!cb*a)(.{5})+$/ on the reverse string) can't be rewritten using the (*SKIP)(*FAIL) pattern (AFAICT). I'm sure this is a problem people stumble upon all the time :P

      For example: /^(.{5})+(?<!ab*c)d/ ... can't be rewritten using the (*SKIP)(*FAIL) pattern ...

      I don't see how it could be done, but I'm still looking. Certainly the trick has its limits. Still, it's handy in a few situations. However, variable width negative look-behind is, perhaps fortunately, not something one tends to really need very often. :)


      Give a man a fish:  <%-{-{-{-<