あなたは正規表現の代替演算子のトリックを使用することができます。
>>> def guess(s):
out = re.findall(r'([a-z])\1{2,}|([a-z])\2', s)
if out and out[0][1]:
return True
return False
>>> k = ['abcdeefg', 'abcdeeefg']
>>> [guess(i) for i in k]
[True, False]
>>>
([a-z])\1{2,}
n個の文字の3最大の分を有する全繰り返し文字と一致。
|
OR
([a-z])\2
一致するすべての同じ連続文字が最初のパターンにマッチしているので、正確に2は、残りの文字列から文字を繰り返します。
または
>>> def guess(s):
out = re.findall(r'([a-z])\1{2,}|([a-z])\2', s)
if out and out[0][1]:
return out[0][1]
return False
>>> k = '23413e4abcee'
>>> k.count(guess(k)) == 2
False
>>> k = '234134abcee'
>>> k.count(guess(k)) == 2
True
>>>
あなたはここに他のanswereのような出力を取得したい場合は、あなたが行く、
>>> def guess(s):
out = re.findall(r'([a-z])\1{2,}|([a-z])\2', s)
if out:
return [y+y for x,y in out if y]
return []
>>> guess("abbbcbbdddeffgggg")
['bb', 'ff']
>>>
それはあなたがそれについて考えることができます場合は...後者の例では、パターンが文字列の 'eef'部分に一致しています – donkopotamus
入力が' acedeefg'の場合、期待される出力は何ですか? –
ありがとう@donkopotamus。私は同意する、それはエフ部分に一致しています。私はabcdeefgと一致するようにしたいと思います。 –