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

时间:2010-09-21 10:51:56

标签: regex perl

我想要比赛

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

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

仅匹配JoeTree。它不匹配树?

2 个答案:

答案 0 :(得分:10)

尝试:

if (/^(?:Joe)?Tree/gi)
  • 我们已将Joe部分设为可选。
  • 您也可以将(..)更改为 (?:...)因为您只是分组。
  • $_ =~部分也是多余的 我们默认签入$_

答案 1 :(得分:5)

您错过了?/^(Joe)?Tree/gi