ホームページ >バックエンド開発 >Python チュートリアル >Python の「re.findall()」を使用して重複する一致を見つけるにはどうすればよいですか?
正規表現における重複一致を理解する
デフォルトでは、Python の re モジュールの findall() メソッドは文字列内の重複一致をキャプチャしません。 。この動作は、特に一致が連続する文字で構成されている場合に混乱を招く可能性があります。
次のコードを考えてみましょう:
match = re.findall(r'\w\w', 'hello') print(match)
出力:
['he', 'll']
このパターンは、連続する 2 つの文字と一致します。単語文字 (w)。予想通り、彼とllは戻ってきました。ただし、el と lo は、文字列に含まれているにもかかわらずキャプチャされません。
重複する一致の克服
重複する一致をキャプチャするには、先読みアサーション (?= ...)。このアサーションは特定のパターンに一致しますが、文字列の文字を消費しません。代わりに、次の文字がアサーションと一致するかどうかをチェックします。
例:
match1 = re.findall(r'(?=(\w\w))', 'hello') print(match1)
出力:
['he', 'el', 'll', 'lo']
この場合、(?=(ww )) は、実際に文字を消費することなく、連続する 2 つの単語文字が存在する任意の場所に一致します。これにより、findall() は重複する一致と重複しない一致の両方を返すことができます。
説明
正規表現 /(?=(ww)) は次のように分解できます。 :
このアプローチを使用すると、連続した文字で構成されている場合でも、文字列内の重複する一致をすべて効果的に検出できます。
以上がPython の「re.findall()」を使用して重複する一致を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。