Python регулярное выражение с ошибкой символов Unicode? - PullRequest
2 голосов
/ 31 августа 2010

Короче говоря:

>>> re.compile(r"\w*").match(u"Français")
<_sre.SRE_Match object at 0x1004246b0>
>>> re.compile(r"^\w*$").match(u"Français")
>>> re.compile(r"^\w*$").match(u"Franais")
<_sre.SRE_Match object at 0x100424780>
>>> 

Почему она не соответствует строке с символами Юникода с ^ и $ в регулярном выражении? Насколько я понимаю, ^ обозначает начало строки (строки), а $ - ее конец.

1 Ответ

5 голосов
/ 31 августа 2010

Вам необходимо указать флаг UNICODE , в противном случае \w эквивалентен [a-zA-Z0-9_], который не включает символ 'ç'.

>>> re.compile(r"^\w*$", re.U).match(u"Fran\xe7ais")
<_sre.SRE_Match object at 0x101474168>
...