为什么an?|the
不起作用?我正在使用PHP的preg_match()。
这是完整的正则表达式:"/^an?|the (.+?) (is|was) an? (.+?)$/"
。
我希望它与"the mona lisa is a painting"
和"a dog is an animal"
匹配。
在我添加|the
以容纳第一个字符串示例之前,它工作正常。
谢谢!
答案 0 :(得分:3)
你写它的方式是使用
进行匹配^an?
或
the (.+?) (is|was) an? (.+?)$
这显然不是你想要的。你必须像is|was
:
/^(an?|the) (.+?) (is|was) an? (.+?)$/
要防止组包含在结果中,请使用语法为(?: )
的非匹配组。所以就像这样使用它:
/^(?:an?|the) (.+?) (is|was) an? (.+?)$/