re.compile (r '[Б] $'). search ('Б') возвращает None - PullRequest
0 голосов
/ 26 апреля 2020

Кажется, что re.compile(r' [Б]$').search(' Б') возвращает None, хотя должно возвращаться <_sre.SRE_Match object; span=(0, 2), match=' Б'>.

Это происходит при запуске его на python2, но не на python3, и это происходит только при символ Unicode (я пробовал кириллицу c и китайский). Он отлично работает с латинскими символами.

sashoalm@HP:~/$ python2
Python 2.7.17 (default) 
>>> print(re.compile(r' [Б]$').search(' Б'))
None

Есть идеи, что происходит? Это реальная ошибка или она должна дать сбой?

1 Ответ

0 голосов
/ 26 апреля 2020

ОК, я понял, что происходит после чтения https://snarky.ca/why-python-3-exists/ - часть о байтах - python обрабатывает символ unfode utf8 как 2 символа ASCII - \xd0\x91, поэтому он должен совпадать пробел, затем только один из 2, затем конец.

Это означает, что print(re.compile(r' [Б][Б]$').search(' Б')) будет соответствовать.

...