ホームページ >バックエンド開発 >Python チュートリアル >「re.findall」が重複する正規表現の一致を返さないのはなぜですか?先読みアサーションはどのようにしてこれを解決できるのでしょうか?
問題:
re.findall を使用して正規表現パターンと一致する場合、重複する一致をすべて取得しないのはなぜですか?たとえば、文字列「hello」では、正規表現 r'ww' が「he」と「ll」にのみ一致し、「el」と「lo」には一致しないのはなぜですか?
答え:
デフォルトでは、re.findall は重複する一致を生成しません。これを実現するには、強力な正規表現機能である先読みアサーションを使用します。
解決策:
# Using a lookahead assertion matches = re.findall(r'(?=(\w\w))', 'hello') # Output: ['he', 'el', 'll', 'lo']
正規表現の (?=...) 構造は次のとおりです。先読みアサーション。指定されたパターンが現在位置の直後に出現する場合に一致しますが、文字列の文字は消費されません。この場合、文字を消費せずに、「hello」内のすべての 2 文字シーケンス (「ww」) を識別します。
説明:
以上が「re.findall」が重複する正規表現の一致を返さないのはなぜですか?先読みアサーションはどのようにしてこれを解決できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。