我一直在玩正则表达式高尔夫球,并确定了一个正则表达式,其中包含了我不应该匹配的所有单词以及我应该匹配的单词。我的想法是,我可以简单地否定正则表达式,然后反过来(包括我应该匹配的所有单词,而不包括其他单词)。
我提出的(\w)(\w)\2\1
正则表达式匹配任何带有abba
模式的内容,因此我认为使用负面外观(?!(\w)(\w)\2\1)
会使我与任何不符合模式{{1}的内容相匹配但是现在它只是突出显示所有内容,如果你想尝试一下,请点击这里的网址:http://regex.alf.nu/4
答案 0 :(得分:2)
在我看来,您希望排除包含那些重复符号的匹配字符串。因此,您需要在字符前添加\w*
(0个或更多单词字符)以测试重复。
使用
^(?!\w*(\w)(\w)\2\1).*
^^^
请参阅regex demo。
因此,(?!\w*(\w)(\w)\2\1)
前瞻在字符串的开头处执行以下检查:如果有0个以上的字母数字/下划线字符,后跟1和2个字符,其后是第2个字符,然后是第1个字符字符,不返回匹配项(匹配失败)。
如果您不打算匹配文本,则不需要.*
部分(例如,如果您只是检查是否匹配)。但是,如果要排除匹配空字符串,只需使用.+
代替.*
(+
匹配 1次或多次出现的量化子模式)。