【问题标题】:match multiple words in any order with regex [duplicate]使用正则表达式以任何顺序匹配多个单词[重复]
【发布时间】:2014-12-06 05:13:47
【问题描述】:

好吧,假设我想在一个句子中匹配 3 个单词...但我需要以任何顺序匹配它们,例如:

$sentences = Array(
   "one two three four five six seven eight nine ten",
   "ten nine eight seven six five four three two one",
   "one three five seven nine ten",
   "two four six eight ten",
   "two ten four six one",
);

所以我需要匹配“二”、“四”和“十”这几个词,但顺序不限,它们之间可以或不可以有任何其他词。我试试

foreach($sentences AS $sentence) {
   $n++;
   if(preg_match("/(two)(.*)(four)(.*)(ten)/",$sentence)) {
       echo $n." matched\n";
   }
}

但这只会匹配句子 1,我需要匹配句子 1、2、4 和 5。

希望能帮到你... 问候! (对不起我的英语)

【问题讨论】:

标签: php regex


【解决方案1】:

您可以使用 Positive Lookahead 来实现此目的。

前瞻方法非常适合匹配包含这些子字符串的字符串,无论顺序如何。

if (preg_match('/(?=.*two)(?=.*four)(?=.*ten)/', $sentence)) {
    echo $n." matched\n";
}

Code Demo

【讨论】:

  • 谢谢!那完成了工作! :D
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 2011-12-04
相关资源
最近更新 更多