匹配除包含特定模式的单词以外的所有单词的正则表达式

4
假设我有两个单词列表,我必须匹配第一个列表中的所有单词,但不匹配第二个列表中的任何一个单词。现在假设第二个列表中的所有单词(那些需要匹配的单词)都包含特定的模式:character1 后跟 character2,然后是 character2character1 再次重复。例如,它包含诸如“abba”、“otto”、“trillion”、“unfitting”等单词。
我可以使用正则表达式(\w)(\w)\2\1轻松匹配此模式。要匹配第二个列表中的所有单词,我可以使用\w*(\w)(\w)\2\1\w*。但是我该如何匹配除了包含此模式的单词以外的所有单词呢?
我尝试的其中一种方法是(?!\w*(\w)(\w)\2\1\w*),但出于某种原因它也匹配了第二个列表中第一个和第二个字符之间的转换。我知道我做错了什么,但我想不明白。

3
\b(?!\w*(\w)(\w)\2\1)\w+ 可以完成这个任务,因为单词边界确保您从开头测试一个单词。 - Casimir et Hippolyte
@Casimir 这个解决了问题!谢谢! - Zeron
@CasimiretHippolyte,你的评论看起来是一个好的、有用的答案,值得发布为一个(至少在我看来是这样的)。 - David K
1个回答

1

ZeronCasimir和Hippolyte那里得到了一个有效的解决方案。

\b(?!\w*(\w)(\w)\2\1)\w+可以完成任务,因为单词边界确保您从开头测试单词。- Casimir和Hippolyte 于1月25日下午7:10


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接