ホームページ >バックエンド開発 >Python チュートリアル >Python 正規表現 \b の単語境界が失敗するのはなぜですか? どうすれば修正できますか?
re モジュールを使用した Python 正規表現の単語境界 (b)
re モジュールを使用して Python で正規表現を操作する場合、次のことが可能です。単語境界式 (b) の動作に関して混乱が生じます。この回答は、単語の境界を一致させようとするときにユーザーが直面する一般的な問題に対処します。
通常、単語と他の文字の間の境界を識別するために使用される b 式は、特定のシナリオでは失敗するようです。次の例を考えてみましょう:
>>> x = 'one two three' >>> y = re.search("\btwo\b", x)
一致オブジェクトが返されるはずですが、代わりに None が返されます。この複雑な結果は、b が Python でサポートされているかどうか疑問に思うかもしれません。
しかし、問題は b 式自体ではなく、操作している文字列にあります。 Python では、バックスラッシュを含む文字列はエスケープ シーケンスとして特別な処理が必要です。これを回避するには、生の文字列を使用する必要があります。
>>> x = 'one two three' >>> y = re.search(r"\btwo\b", x) >>> y <_sre.SRE_Match object at 0x100418a58>
「r」接頭辞を追加すると、バックスラッシュが b 式を含むリテラル文字として扱われる生の文字列が作成されます。これにより、Python は単語の境界を正しく照合できるようになります。
または、 re.compile() 関数を使用して、照合する単語を含む正規表現パターンを作成することもできます:
word = 'two' k = re.compile(r'\b%s\b' % word, re.I)
このアプローチにより、複数の文字列に効率的に適用したり、複雑な正規表現操作で使用したりできるコンパイルされたパターンが得られます。
要約すると、生の文字列を使用することを忘れないでください。文字列または re.compile() 関数を使用して、Python の re モジュールで単語境界式を適切に処理します。
以上がPython 正規表現 \b の単語境界が失敗するのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。