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

Tre*_*ree 3 regex perl

我想要比赛

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

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

它只匹配JoeTree.它不匹配树?

cod*_*ict 10

尝试:

if (/^(?:Joe)?Tree/gi)
Run Code Online (Sandbox Code Playgroud)
  • 我们已经将该Joe部分选为可选的.
  • 你也可以改变(..),以 (?:...)作为你只是分组.
  • 另外$_ =~一部分是多余的,因为在默认情况下,我们在检查$_


spl*_*ash 5

你错过了一个?:/^(Joe)?Tree/gi