我的正则表达式= '(\d+)\1+'
我的目标是捕捉重复图案,例如2323,1212,345345,它们具有不同的数字。目前的正则表达式还捕获了我需要排除的11,22,11111
示例 -
对于输入= 44556841335158684945454545
比赛是
44
55
45454545
比赛应该是 -
45454545
如何编写排除44和55的正则表达式并给出具有不同数字的结果
答案 0 :(得分:1)
这是我认为你想要的正则表达式:
>>> arr
array([[ 1., 2., 0., 0., 0.],
[ 3., 4., 0., 0., 0.],
[ 0., 0., 9., 8., 7.],
[ 0., 0., 6., 5., 4.],
[ 0., 0., 3., 2., 1.]])
一点解释:
(\d)((?!\1)\d)
\ d匹配一个数字(等于[0-9])
(\d)
否定前瞻
((?!\1)\d)
断言下面的正则表达式不匹配
(?!\1)
匹配与第一个捕获组
最近匹配的文本相同的文本
\1
匹配一个数字(等于[0-9])
这是一个快速的JS演示:
\d

答案 1 :(得分:0)
要说“重复两个不同的数字”,您可以尝试
((\d)(?!\2)\d)\1
捕获括号从左边开始编号;所以\1
匹配整个外部括号,(?!\2)
指的是第一个数字周围的内括号,约束第二个数字,使其不能与第一个数字相同。
演示:https://regex101.com/r/5f2CEf/1
显然,最后添加一个+
来覆盖匹配的所有相邻重复。