【问题标题】:Regular expression to match all words except those containing a certain pattern正则表达式匹配除包含特定模式的单词之外的所有单词
【发布时间】:2015-01-25 19:05:04
【问题描述】:

假设我有两个单词列表,我必须匹配 first list 中的 all 单词但 second 中的 none列表。现在假设第二个列表中的所有单词(那些要匹配的单词)都包含特定的模式:character1 后跟 character2 然后 character2character1 再次。例如,它包含“abba”、“otto”、“trillion”、“unfitting”等词。

我可以通过使用正则表达式(\w)(\w)\2\1 轻松匹配此模式。为了匹配第二个列表中的所有单词,我可以使用\w*(\w)(\w)\2\1\w*。但是,除了包含此模式的单词之外,我如何匹配所有单词?

我尝试过的其中一个事情是(?!\w*(\w)(\w)\2\1\w*),但由于某种原因,它也匹配第二个列表中第一个和第二个字符之间的转换。我知道我做错了什么,但我不知道是什么。

【问题讨论】:

  • \b(?!\w*(\w)(\w)\2\1)\w+ 可以完成这项工作,因为单词边界可确保您从一开始就测试单词。
  • @Casimir 这成功了!谢谢!
  • @CasimiretHippolyte 您的评论似乎是一个很好且有用的答案,值得发布(至少在我看来是这样)。

标签: regex word-list


【解决方案1】:

ZeronCasimir et Hippolyte 获得可行的解决方案

\b(?!\w*(\w)(\w)\2\1)\w+ 可以完成这项工作,因为单词边界可确保您从一开始就测试单词。 – Casimir et Hippolyte 1 月 25 日 19:10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2016-01-14
    相关资源
    最近更新 更多