我尝试使用以下模式来检查使用|
并使用否定超前行在各个位置上是否出现交替数字:
(\d)\d\1(?!(\d)\d\2)\d{3}|\d{2}(\d)\d\3\d|(?!(\d)\d\4)(\d)\d\5
这些值有效:
101123
121013
这些无效:
101101
111111
答案 0 :(得分:1)
好,你走了,这只有在有的时候才匹配
不是每个其他数字重复的序列
每个3位数序列内。
即。 D1 d D1 D2 d D2
失败
或D1 d D1 D2 d D2 d D3 d D3
失败
^(?!(?:(\d)\d\1)+$)\d+$
https://regex101.com/r/Qn1i3f/1
可读代码
^
(?!
(?:
( \d ) # (1)
\d \1
)+
$
)
\d+
$
答案 1 :(得分:0)
This regex可以帮助您<-
在第一个捕获组(*SKIP)(*FAIL)
中重复两位和三位数字,然后返回其他所需的六位数字:
()
第一组使用this expression捕获不需要的数字,您可以对它进行简单的字符串替换并从输入中删除这些数字:
(\d{2,3}).*\1(*SKIP)(*F)|([0-9]{6})
此图显示了它的工作方式:
(\d{2,3}).*\1
是PCRE命令,不适用于Python。