如何在正则表达式中找到唯一的重复组

时间:2018-02-16 03:16:05

标签: regex

我的正则表达式= '(\d+)\1+' 我的目标是捕捉重复图案,例如2323,1212,345345,它们具有不同的数字。目前的正则表达式还捕获了我需要排除的11,22,11111

示例 - 对于输入= 44556841335158684945454545 比赛是     44     55     45454545 比赛应该是 - 45454545

如何编写排除44和55的正则表达式并给出具有不同数字的结果

2 个答案:

答案 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

显然,最后添加一个+来覆盖匹配的所有相邻重复。