4

我用 php 和 regex 做一个简单的文字游戏,如果一个字符串必须需要两个或多个单词,我们如何搜索?

让我们说

"cat"
"dog"
"play" x 2

如果

“猫狗玩玩”通行证

“你好猫狗玩戏”不及格,只有1个“戏”

“猫”不通过,没有狗和2x播放

“我想要一只猫和一只狗和我一起玩,和爷爷一起玩”通过

我们如何将它与正则表达式匹配?

4

2 回答 2

7

您正在寻找的正则表达式是:

/(?=.*?\bcat\b)(?=.*?\bdog\b)(?=(.*?\bplay\b){2})^.*$/

解释:我相信单词cat,dogplay(两次) 可以以任何顺序出现在文本中,但它们必须全部出现在句子中才能限定。上面的正则表达式使用正向前瞻来确保上述条件的存在。

这是上述 RegEx 的在线工作演示

于 2012-06-03T13:16:17.047 回答
2

尝试preg_match_all(/cat.+dog(.+play){2}/i,$str,$out);

于 2012-06-03T12:48:48.637 回答