0

我有一个 Python 问题想象下面的变量 x。我想编写一个正则表达式来帮助我找到任何重复的单个数字。Like 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

4

1 回答 1

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']
于 2012-10-29T07:53:02.747 回答