ホームページ >バックエンド開発 >Python チュートリアル >`re.findall()` は正規表現内の重複一致をどのように処理しますか?

`re.findall()` は正規表現内の重複一致をどのように処理しますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 14:06:12330ブラウズ

How Does `re.findall()` Handle Overlapping Matches in Regular Expressions?

正規表現の重複一致を理解する

re.findall() を使用して正規表現と一致する場合、重複一致がどのように処理されるかを理解することが重要です。デフォルトでは、 re.findall() は重複しない一致を返します。

ケーススタディ: hello と ww

次のパターンを考えてみましょう:

>>> match = re.findall(r'\w\w', 'hello')
>>> print match
['he', 'll']

予想どおり、このパターンは 2 文字のシーケンスに一致します。ただし、「el」または「lo」は、それぞれ「he」および「ll」と重複するため、一致しません。

先読みアサーションとの重複一致

重複する一致を見つけるには、先読みアサーションを使用できます。 (?=...) で示される先読みアサーションは、入力文字列を消費せずに、指定されたパターンが次に存在するかどうかを検証します。

この概念を使用して、次の式は重複する一致と重複しない一致の両方を正常にキャプチャします。

>>> re.findall(r'(?=(\w\w))', 'hello')
['he', 'el', 'll', 'lo']

パターンは次のようになります:「2 文字の単語が続く場所を検索する」。これにより、重複するシーケンスと重複しないシーケンスの両方を含む、一致する可能性のあるすべてのシーケンスが確実にキャプチャされます。

以上が`re.findall()` は正規表現内の重複一致をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。