特殊文字を含むパターンの単語境界の処理
Python の re モジュールは、単語境界を照合するための b パターンを提供します。ただし、{} などの特殊文字を含むパターンと一緒に使用すると、予期しない動作になる可能性があります。
パターン Sortesindex[persons]{Sortes} について考えてみましょう。 b を使用して単語全体のインスタンスのみと一致することを確認すると、「test Sortesindex[persons]{Sortes} text」で肯定的な結果が得られると予想されますが、失敗します。
単語境界の動作の検査
ドキュメントでは、b を単語と単語以外の文字の間、または文字列の先頭/末尾と単語の間の境界を一致させると説明しています。 Character.
このパターンでは、 b は単語の末尾に一致しますが、明示的には先頭には一致しません。特殊文字として } が存在すると b に曖昧さが生じ、予期しない動作が発生します。
適応型単語境界の使用
1 つの解決策は、適応型単語境界を使用することです。パターンの周囲のコンテキストを考慮します。どちらかの側の非単語文字またはどちらかの側の単語文字をチェックして、正確な一致を保証します。これは次のように表すことができます:
(?:(?!w)|b(?=w)){}(?:(?<=w)b|(?
ここで:
これにより、テスト文字列内の Sortesindex[persons]{Sortes} との正確な一致が保証されます。ただし、次のような一致は除外されます。ソート。
代替オプション
正しいアプローチの選択
適応型単語境界はより緩やかです。パターンの周囲の非単語文字とのマッチングを可能にします。明確な単語境界はより制限的であり、両端に単語文字は必要ありません。特定のマッチング要件に最も適したアプローチを選択してください。
以上がPython の `\b` 単語境界が正規表現内の特殊文字で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。