2016-11-23 9 views
0
import re 
print(len(re.findall('ANA', 'BANANA'))) 

これは1を出力しますが、文字を使用して一致をカウントするので、出力は2になります。これはre findallを使用して行うことができますか?Pythonはfindall複数の同じ文字を許可します

+0

いいえ、アンカーポイントを繰り返し変更するコードを記述する必要があります。あなたが望むのは重なり合うマッチですが、 're'モジュールのメソッドはオーバーラップしないマッチだけを見つけます。 –

答えて

2

現在のところ標準のreモジュールでは、これを行うことはできません。 regexモジュール上の情報はここで見つけることができます

import regex 
print(len(regex.findall('ANA', 'BANANA', overlapped=True))) 

https://pypi.python.org/pypi/regex

は、あなたはおそらくそれをインストールする必要があります他のスレッドで指摘したようにしかし、あなたはoverlappedフラグを提供しています新しいregexモジュールを使用することができます:上述

pip install regex 

他のスレッド:How to find overlapping matches with a regexp?Python regex find all overlapping matches?