ホームページ > バックエンド開発 > Python チュートリアル > Python 正規表現 \b の単語境界が失敗するのはなぜですか? どうすれば修正できますか?

Python 正規表現 \b の単語境界が失敗するのはなぜですか? どうすれば修正できますか?

Mary-Kate Olsen
リリース: 2024-12-19 10:13:14
オリジナル
344 人が閲覧しました

Why Does My Python Regex b Word Boundary Fail, and How Can I Fix It?

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 サイトの他の関連記事を参照してください。

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