我对下面的正则表达式感到困惑.请帮我理解一下.
my $test = "fred andor berry"; if ($test =~ /fred (and|or) berry/) { print "Matched!\n"; } else { print "Did not match!\n"; }
我认为它会匹配,但我得到“不匹配!”.如果我加入它,像这样,
my $test = "fred andor berry"; if ($test =~ /fred (and|or)+ berry/) { print "Matched!\n"; } else { print "Did not match!\n"; }
然后匹配.我以为我可以使用和/或将表达式与“and”,“or”和“andor”匹配.没有?
解决方法
表达式(和|或)将匹配和或或,但不是和或.当你添加它时,它将接受相同模式的两个(实际上是一个或多个)连续匹配,这允许它匹配oror. (首先它匹配,然后或.)