【问题标题】:How to match words with common prefix in PHP?如何在 PHP 中匹配具有共同前缀的单词?
【发布时间】:2011-05-19 14:07:04
【问题描述】:

我需要写一个正则表达式来匹配这个词。可以使用/\bword\b/ 模式来查找确切的单词。

但我希望模式找到wordwordswording 等等。

例如,我想编写一个模式来在段落字符串中查找术语 accountaccountingaccountsaccountant

【问题讨论】:

    标签: php regex preg-match-all string-matching


    【解决方案1】:

    我认为这会让你到达那里:

    /\<word(|s|ing)\>/
    

    【讨论】:

      【解决方案2】:
      \b(accounting|accounts|account)\b
      

      【讨论】:

        【解决方案3】:

        我可能错了,但我不认为 "/\b*word*\b/" 得到单词,而是它实际上匹配 '''''wor'||worddddd| 之类的东西,如果你想要单词及其变体,请尝试:

        /\bword[^\b]+\b/i
        

        【讨论】:

        • 忽略那些 * 我实际上是想加粗这个词。您的解决方案不是寻找一个单词,而是在第一次匹配单词之后实际匹配所有内容。
        • [^\b] 不起作用 - \b 不会被解释为字符类中的单词边界。 \b 的否定是 \B,但即使这样在这里也行不通 - 重复一个零长度的断言没有任何意义,当然它永远不可能匹配一个 \b 对在\B之后。
        【解决方案4】:

        要匹配您的关键字(可选地后跟singant),您可以使用:

        /\b($word(?:|s|ing|ant))\b/i
        

        see it

        如果您想允许任何可选字母作为后缀,您可以使用:

        /\b($word\w*)\b/i
        

        【讨论】:

        • 任何变体的第二个都对我有用。谢谢。 @andread \w 丢失而不是 .在您的模式中,无论如何再次感谢所有人
        • @daron:不客气。另外,由于您是 SO 新手,我想告诉您,您可以通过单击答案旁边的正确标记来接受对您帮助最大的答案 :)
        • 如何对mysql使用相同的表达式。我试过 SELECT * FROM table WHERE word REGEXP '/\b($word\w*)\b/i';这没有用
        猜你喜欢
        • 1970-01-01
        • 2014-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-13
        • 2014-10-21
        • 2013-08-25
        • 2015-08-16
        相关资源
        最近更新 更多