Я хочу матч
my @array = ( 'Tree' , 'JoeTree','Joe'); foreach (@array ) { if ( $_ =~ /^(Joe)[^Tree]/gi) { print "matched $_"; } }
Это соответствует только Джо. оно не должно совпадать ни с чем другим
Для этого вам не нужны регулярные выражения:
if ($_ eq 'Joe') { print "matched $_"; }
Соответствует только «Джо» как весь текст?
/^(Joe)$/
или сопоставить «Джо» как одно слово?
/\b(Joe)\b/
или соответствует «Джо», за которым не следует «Дерево»?
/^(Joe)(?!Tree)/