PHP正则表达式匹配句子中的单词,可选地只匹配其他单词

时间:2015-06-19 18:21:47

标签: php regex

我正在寻找一个PHP正则表达式来匹配句子中的单词,该单词还可以选择允许句子中的其他单词但如果句子中有任何其他单词不在允许列表中,则匹配应该失败。例如:

The quick fox

我在这里寻找狐狸。如果它们出现,''和'快速'也可以。由于这些单词是可选的,所以只需

fox 

也可以。但是,

The quick brown fox

不行。我不想要一只棕色的狐狸。

随意提出另一种方法,但它需要快速开始。

编辑:这些词会出现在狐狸之前,但它们可以以任何顺序出现,所以

 quick The fox

也应该匹配。

2 个答案:

答案 0 :(得分:1)

只需将前两个单词设为可选。

^(?:(?:The )?(?:quick )?fox|(?:quick )(?:The )?fox|(?:fox )?(The )?quick|(?:The )?(?:fox )?quick)$

答案 1 :(得分:0)

好的我觉得我找到了一个不太复杂的解决方案,就我测试而言,它似乎与我想要的结果一起工作

 ^(?(?=\b)(?:The|quick|\W)|.)+?fox

我在这里检查每个角色,看看它是否是一个单词边界。如果是,那么你必须匹配'或者'快速'或者在那一点上的非单词字符(表示你在单词的末尾)。这将持续到我匹配“狐狸”为止。如果我匹配任何其他单词而不是匹配失败的单词。