我想捕捉彼此不相同的字母。这个找到一个字母然后检查它旁边的另一个字母是否不相同。这个有效。
\b((\w)(?!(\2)))+\b
这个说不匹配彼此相邻的字母,至少这是我认为它应该做的,但它不起作用。
\b(?!((\w)\3))+\b
答案 0 :(得分:0)
第二种模式\b(?!((\w)\3))+\b
非常奇怪
没有\3
,因为否定前瞻(?!...)
不会形成捕获组,因此您只有两个组
如果整体模式匹配,那么您知道负面预测未匹配,因此永远不会定义\1
和\2
您要求零宽度模式的多个副本(负前瞻与字符串中的单点匹配)
负面预测永远不会消耗任何字符,因此两个字边界之间永远不会有任何字符
很难知道如何为你“修复”这个问题,因为我看不到你想要实现的算法。你的第一个模式不需要围绕\2
的括号:只有(?!\2)
是正常的,并且你没有捕获匹配后使用的整个单词,这通常是比使用更好的方法整个匹配的字符串
我想我会写这个
\b((?:(\w)(?!\2))+)\b