假设我有两个单词列表,我必须匹配第一个列表中的所有单词,但不匹配第二个列表中的任何一个单词。现在假设第二个列表中的所有单词(那些不需要匹配的单词)都包含特定的模式: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 et Hippolyte