我有一个Python问题想象变量x如下。我想写一个正则表达式,帮助我找到任何重复的单个数字。如1不重复,但2提到两次,3是3次。
x='1234328732'#a string of digits
re.search(r'(\d+).*\1', x).group(1)
这就是我的想法,但这只是让我回归模式。以上没有返回任何原因,因为没有重复的模式。但是如果
x='1231231234'
它将返回123 但重复模式不是我想要的。我想重复数字。所以对于第一个x,它应该给2,3 对于第二个x,它应该给出1,2,3
这主要是为了学习RE的想法 THX
答案 0 :(得分:6)
可能是这样的,使用Counter()
:
>>> import re
>>> from collections import Counter
>>> x='1234328732'
>>> c=Counter(re.findall(r'\d',x))
>>> [x for x in c if c[x]>1]
['3', '2']
>>> x='1231231234'
>>> c=Counter(re.findall(r'\d',x))
>>> [x for x in c if c[x]>1]
['1', '3', '2']