1. ホーム
  2. python

[解決済み] reモジュールの正規表現は、単語境界( \b) に対応していますか?

2022-08-24 06:28:10

質問

正規表現についてもう少し学びたいと考えていたところ、あるチュートリアルで \b を使って単語の境界をマッチさせることができるということをチュートリアルが教えてくれました。しかし、Python インタープリタでの次のスニペットは期待通りに動作しません。

>>> x = 'one two three'
>>> y = re.search("\btwo\b", x)

何かマッチした場合はマッチオブジェクトになるはずですが None .

\b 式はPythonでサポートされていないのでしょうか、それとも私の使い方が間違っているのでしょうか?

どのように解決するのですか?

あなたは は生の文字列を使用する必要があります を使うべきです。

>>> x = 'one two three'
>>> y = re.search(r"\btwo\b", x)
>>> y
<_sre.SRE_Match object at 0x100418a58>
>>> 

また

word = 'two'
re.compile(r'\b%s\b' % word, re.I)

出力します。

>>> word = 'two'
>>> k = re.compile(r'\b%s\b' % word, re.I)
>>> x = 'one two three'
>>> y = k.search( x)
>>> y
<_sre.SRE_Match object at 0x100418850>