in reply to Re^3: Quick Regex Question
in thread Quick Regex Question
... using a zero-width negative look-ahead assertion; or ... using a z +ero-width positive look-ahead assertion together with \D ...
Note that (?!\d) and (?=\D) are not complementaryequivalent. The (?!\d) assertion is satisfied by having any non-digit follow it or by nothing, i.e., by the end of the string, nothing being not-a-digit. The (?=\D) assertion must be followed by a non-digit character. And similarly with the (?<!\d) and (?<=\D) look-behinds.
>perl -wMstrict -le "my $s = 'xyzINC1234567'; ;; print 'negative assertion true' if $s =~ /INC\d{7}(?!\d)/; print 'positive assertion true' if $s =~ /INC\d{7}(?=\D)/; " negative assertion true
In this behavior, (?!\d) and, in general, (?!character-or-character-class) and its negative look-behind cousin are similar to (but not exactly the same as) the \b assertion, which may be true at the beginning or end of a string.
|
---|
In Section
Seekers of Perl Wisdom