1

ネガティブな先読みの中に単語の境界を設定したい。ただし、以下の例でわかるように、これはPythonでは機能しないようです。これはサポートされていませんか?もしそうなら、回避策はありますか?

私が解決しようとしている問題全体を述べると、で使用している正規表現がre.subあり、特に一致させたくない特定の単語( "455"など)がいくつかあります。

In [8]: print re.match('(?!455)455', '455')
None

In [9]: print re.match('(?!455\b)455', '455')
<_sre.SRE_Match object at 0x1108fb440>
4

1 に答える 1

3

\bはエスケープシーケンスであるため、バックスラッシュ文字ASCIIと一致します0x08。バックスラッシュをエスケープするか、生の文字列リテラルを使用する必要があります。

>>> print(re.match(r'(?!455\b)455', '455'))
None
于 2012-09-24T20:36:13.930 に答える