ホームページ > バックエンド開発 > Python チュートリアル > Python の `\b` 単語境界が正規表現内の特殊文字で失敗するのはなぜですか?

Python の `\b` 単語境界が正規表現内の特殊文字で失敗するのはなぜですか?

Patricia Arquette
リリース: 2024-12-09 05:00:10
オリジナル
902 人が閲覧しました

Why Does Python's `b` Word Boundary Fail with Special Characters in Regular Expressions?

特殊文字を含むパターンの単語境界の処理

Python の re モジュールは、単語境界を照合するための b パターンを提供します。ただし、{} などの特殊文字を含むパターンと一緒に使用すると、予期しない動作になる可能性があります。

パターン Sortesindex[persons]{Sortes} について考えてみましょう。 b を使用して単語全体のインスタンスのみと一致することを確認すると、「test Sortesindex[persons]{Sortes} text」で肯定的な結果が得られると予想されますが、失敗します。

単語境界の動作の検査

ドキュメントでは、b を単語と単語以外の文字の間、または文字列の先頭/末尾と単語の間の境界を一致させると説明しています。 Character.

このパターンでは、 b は単語の末尾に一致しますが、明示的には先頭には一致しません。特殊文字として } が存在すると b に曖昧さが生じ、予期しない動作が発生します。

適応型単語境界の使用

1 つの解決策は、適応型単語境界を使用することです。パターンの周囲のコンテキストを考慮します。どちらかの側の非単語文字またはどちらかの側の単語文字をチェックして、正確な一致を保証します。これは次のように表すことができます:

(?:(?!w)|b(?=w)){}(?:(?<=w)b|(?

ここで:

  • (?:(?!w)|b(?=w)) は左側の境界であり、一致が可能です。
  • (?:(?<=w)b|(?

これにより、テスト文字列内の Sortesindex[persons]{Sortes} との正確な一致が保証されます。ただし、次のような一致は除外されます。ソート。

代替オプション

  • 明確な単語境界: 適応型単語境界に似ていますが、単語文字が存在しないことが必要です。パターンの両側に。
  • 空白境界: パターンが空白文字で囲まれている一致を特にチェックします。

正しいアプローチの選択

適応型単語境界はより緩やかです。パターンの周囲の非単語文字とのマッチングを可能にします。明確な単語境界はより制限的であり、両端に単語文字は必要ありません。特定のマッチング要件に最も適したアプローチを選択してください。

以上がPython の `\b` 単語境界が正規表現内の特殊文字で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート