119

正規表現についてもう少し学習しようとしているときに、チュートリアルで を使用し\bて単語境界を一致させることができると提案されました。ただし、Python インタープリターの次のスニペットは期待どおりに機能しません。

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

何かが一致した場合、それは一致オブジェクトであったはずですが、None.

式は\bPython でサポートされていませんか、それとも使い方が間違っていますか?

4

4 に答える 4

105

コードで生の文字列を使用する必要があります

>>> 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>
于 2010-10-22T08:24:58.180 に答える
102

これはうまくいきます:re.search(r"\btwo\b", x)

"\b"Python で記述する場合は、1 文字です: "\x08". 次のようにバックスラッシュをエスケープします。

"\\b"

または、次のような生の文字列を記述します。

r"\b"
于 2010-10-22T08:49:32.707 に答える