【问题标题】:Regex: how to match every word from a group in any order?正则表达式:如何以任何顺序匹配组中的每个单词?
【发布时间】:2019-11-10 03:33:00
【问题描述】:

假设我想搜索单词hamburgersteak。正则表达式应仅在以任一顺序找到两个单词时匹配/返回 true。即

将返回true

I like hamburgers and steak
I like steak and hamburgers

虽然这些将返回 false,因为只有一个词匹配

I like hamburgers
I like stake

希望有人可以帮助我解决这个问题。理想情况下,有一个简单的解决方案,因为这些查询将由 PHP 生成,并且用户可以输入无限的单词进行搜索(与此示例相反,仅使用 2 个),因此复杂的解决方案可能难以实现/调试

无论如何,提前感谢您的帮助:)

【问题讨论】:

    标签: regex match word


    【解决方案1】:

    尝试以下模式:

    ^.*\b(?:hamburgers\b.*\bsteak|steak\b.*\bhamburgers)\b.*$
    

    这将匹配关键字hamburgerssteak,以任何顺序排列。

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2013-09-27
      • 2014-12-06
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      相关资源
      最近更新 更多