pythonが '。'を処理する方法にエラーはありますか?または '\ b'?なぜこれが異なる結果を生むのか分かりません。Pythonの正規表現の境界
import re
regex1 = r'\.?\b'
print bool(re.match(regex1, '.'))
regex2 = r'a?\b'
print bool(re.match(regex2, 'a'))
出力:
False
True
pythonが '。'を処理する方法にエラーはありますか?または '\ b'?なぜこれが異なる結果を生むのか分かりません。Pythonの正規表現の境界
import re
regex1 = r'\.?\b'
print bool(re.match(regex1, '.'))
regex2 = r'a?\b'
print bool(re.match(regex2, 'a'))
出力:
False
True
\b
、ワード境界は、単語の文字と非単語の要素の間に一致します。したがって、それはa
のような単語文字と文字列の最後との間で一致しますが、.
のような非単語文字と文字列の終わりとの間では一致しません。
geekosaurは\b
を指摘したように、単にあなたが
(?!\w)
または
(?!\S)
の代わり\b
を使用することをお勧めしますあなたのケースでは
(?:(?<=\w)(?!\w)|(?<!\w)(?=\w))
を書くの短い方法です。