如何使Perl正则表达式的一部分为负可选?

时间:2010-09-28 09:27:46

标签: perl

我想要比赛

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

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

仅匹配Joe。它不应该匹配任何其他东西

2 个答案:

答案 0 :(得分:6)

你不需要正则表达式:

if ($_ eq 'Joe') {
    print "matched $_";
}  

答案 1 :(得分:2)

仅匹配'Joe'作为整个文本?

/^(Joe)$/

或将'Joe'与单独的单词匹配?

/\b(Joe)\b/

或匹配'Joe'后面没有'Tree'?

/^(Joe)(?!Tree)/