2012-04-09 10 views
0

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 

答えて

4

\b、ワード境界は、単語の文字と非単語の要素の間に一致します。したがって、それはaのような単語文字と文字列の最後との間で一致しますが、.のような非単語文字と文字列の終わりとの間では一致しません。

0

geekosaurは\bを指摘したように、単にあなたが

(?!\w) 

または

(?!\S) 

の代わり\bを使用することをお勧めしますあなたのケースでは

(?:(?<=\w)(?!\w)|(?<!\w)(?=\w)) 

を書くの短い方法です。