Как сделать часть регулярного выражения Perl отрицательной необязательной? - PullRequest
0 голосов
/ 28 сентября 2010

Я хочу матч

my @array = ( 'Tree' , 'JoeTree','Joe');

    foreach (@array ) {
      if ( $_ =~ /^(Joe)[^Tree]/gi) {
        print "matched $_";
      }
    }

Это соответствует только Джо. оно не должно совпадать ни с чем другим

Ответы [ 2 ]

6 голосов
/ 28 сентября 2010

Для этого вам не нужны регулярные выражения:

if ($_ eq 'Joe') {
    print "matched $_";
}  
2 голосов
/ 28 сентября 2010

Соответствует только «Джо» как весь текст?

/^(Joe)$/

или сопоставить «Джо» как одно слово?

/\b(Joe)\b/

или соответствует «Джо», за которым не следует «Дерево»?

/^(Joe)(?!Tree)/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...