【发布时间】:2015-01-25 19:05:04
【问题描述】:
假设我有两个单词列表,我必须匹配 first list 中的 all 单词但 second 中的 none列表。现在假设第二个列表中的所有单词(那些不要匹配的单词)都包含特定的模式:character1 后跟 character2 然后 character2 和 character1 再次。例如,它包含“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 您的评论似乎是一个很好且有用的答案,值得发布(至少在我看来是这样)。