我为编写匹配"ABAB","AABB","ABB","AAB","ABAC"和"ABCB"的正则表达式感到沮丧.
我们以"ABAB"为例,以下所有字符串都将匹配:
abab
bcbc
1212
xyxy
9090
0909
Run Code Online (Sandbox Code Playgroud)
这意味着RegEx应匹配第1和第3个字符相同的字符串,第2个和第4个字符也相同,但第1个和第2个不应该相同(第3个和第4个当然不应该相同).
我能说清楚吗?
谢谢.
彼得
(\w)(\w(?<!\1))\1\2
Run Code Online (Sandbox Code Playgroud)
(\w) 匹配一个单词字符(数字,字母......)并将匹配捕获到反向引用1中(\w...) 匹配一个单词字符(数字,字母......)并将匹配捕获到反向引用2中(?<!\1)声称无法匹配通过捕获组号1匹配的正则表达式与在此位置结束的匹配(负向后观)\1 匹配最近匹配的相同文本,捕获组号1\2 匹配最近匹配的相同文本,捕获组号2AABB ==> (\w)\1(\w(?<!\1))\2ABB ==> (\w)(\w(?<!\1))\2AAB ==> (\w)\1(\w(?<!\1))ABAC ==> (\w)(\w(?<!\1))\1(\w(?<!\1|\2))ABCB ==> (\w)(\w(?<!\1))(\w(?<!\1|\2))\2