我想只匹配1010或0101,但也不匹配1111或0000。 我使用以下正则表达式:
\b((1|0)(?!\2))+
它在Kodos中运行良好但我也希望匹配的序列归功于group()。 我试过了:
\b(((1|0)(?!\2))+)
但Kodos中显示“不能参考开放组*” 我不明白为什么它不起作用。
请你能帮帮我吗?
编辑:相应的正则表达式为(\b(((1|0)(?!\3))+)
。
答案 0 :(得分:9)
我认为问题是你的第二个代码行中有三个独立的组。它们根据开口的排序进行编号。
Group 1: ((1|0)(?!\2))+
Group 2: (1|0)(?!\2)
Group 3: 1|0
正如您所看到的,第2组包含对自身的引用,但在解析时它仍处于打开状态。