Octavian Rasnita wrote:
>
> I wanted to test something like:
>
> Match only if the string contains somewhere a "ab" in it but it doesn't
> contain "ab" between < and >.
>
> For example:
>
> "zzz <> ttt> ab" - matches
> "z ab <tt> xx" - matches
> "zzz ab <>ab> tt" - doesn't match
> "ab <a x> <ab>" - doesn't match
>
> I've done it by using 2 regular expressions, but I was searching for a
> solution for doing using only a single regular expression. Is it possible to
> test the existence of a string and the non-existence of another string using
> a single regular expression?
>
> I've tried using (?=...) and (?!...) but these 2 expressions can be used only
> if I know where in the string I want a certain string to appear or not to
> appear.
How about this?
Rob
use strict;
use warnings;
while (<DATA>) {
chomp;
my $match = /^(?=.*ab)(?!.*<.*ab.*>)/ ? "matches" : "doesn't match";
print "$_ - $match\n";
}
__END__
zzz <> ttt> ab
z ab <tt> xx
zzz ab <>ab> tt
ab <a x> <ab>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/