【发布时间】:2016-03-19 14:21:12
【问题描述】:
我正在尝试使用 RegEx(或者也许有更好的方法?)来捕捉一个字母是否在字符串中出现两次,例如我的字符串是:
ugknbfddgicrmopn
输出将是:
dd
但是,我尝试过类似的方法:
re.findall('[a-z]{2}', 'ugknbfddgicrmopn')
但在这种情况下,它会返回:
['ug', 'kn', 'bf', 'dd', 'gi', 'cr', 'mo', 'pn'] # the except output is `['dd']`
我也有办法得到期望的输出:
>>> l = []
>>> tmp = None
>>> for i in 'ugknbfddgicrmopn':
... if tmp != i:
... tmp = i
... continue
... l.append(i*2)
...
...
>>> l
['dd']
>>>
但这太复杂了……
如果是'abbbcppq',则只捕获:
abbbcppq
^^ ^^
所以输出是:
['bb', 'pp']
那么,如果是'abbbbcppq',抓bb两次:
abbbbcppq
^^^^ ^^
所以输出是:
['bb', 'bb', 'pp']
【问题讨论】:
-
你可以使用反向引用,
([a-z])\1 -
你似乎期待——但没有提到——连续性,如果
"ddd"在场,你没有解释你想要什么结果。 -
@kevin 如果字母出现两次以上怎么办>?
-
你的意思是字母出现两次一起还是输入中的任何地方?
标签: python regex python-2.7