如果没有后跟不同的字符,我怎么能正则表达式匹配一个字符?

时间:2015-07-31 00:21:15

标签: regex perl if-statement

我有一个包含CA,C,CB,CZ的数组。我想要if语句只匹配C,CB,CZ。

@array = ("CA", "C", "CB", "CZ");

foreach (@array) {
 if ($_ =~ m/^C|^C.&[^CA]) {
  print "true \n";
 }
}

这不起作用,但我认为它可能很接近。我可以用什么perl正则表达式来实现我的目标?

3 个答案:

答案 0 :(得分:3)

最简单的解决方案如下:

/^C[BZ]?\z/

如果你真的想要匹配以" C"开头的字符串,那么" C"不是" A",然后您需要以下内容:

/^C(?!A)/

答案 1 :(得分:0)

我认为这符合你的要求:

#!/usr/bin/env perl
@array = ("CA", "C", "CB", "CZ");

foreach (@array) {
  if ($_ =~ m/^C$|^C[^A]/) {
    print "true \n";
  }
}

答案 2 :(得分:-2)

您可以使用以下正则表达式

C[^A]

Demo