PHP正则表达式:包含量词的OR语句

时间:2012-07-03 08:49:46

标签: php regex

为什么an?|the不起作用?我正在使用PHP的preg_match()。

这是完整的正则表达式:"/^an?|the (.+?) (is|was) an? (.+?)$/"

我希望它与"the mona lisa is a painting""a dog is an animal"匹配。

在我添加|the以容纳第一个字符串示例之前,它工作正常。

谢谢!

1 个答案:

答案 0 :(得分:3)

你写它的方式是使用

进行匹配
^an?

the (.+?) (is|was) an? (.+?)$

这显然不是你想要的。你必须像is|was

一样把它放在parantheses中
/^(an?|the) (.+?) (is|was) an? (.+?)$/

要防止组包含在结果中,请使用语法为(?: )的非匹配组。所以就像这样使用它:

/^(?:an?|the) (.+?) (is|was) an? (.+?)$/