Ошибка при использовании регулярных выражений: re.error: bad escape \p at position 0 re.error: bad escape \p at position 0

import re
re.match(r'\p{script=Latin}', "Latin text")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.8/re.py", line 191, in match
    return _compile(pattern, flags).match(string)
  File "/usr/lib/python3.8/re.py", line 304, in _compile
    p = sre_compile.compile(pattern, flags)
  File "/usr/lib/python3.8/sre_compile.py", line 764, in compile
    p = sre_parse.parse(p, flags)
  File "/usr/lib/python3.8/sre_parse.py", line 948, in parse
    p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
  File "/usr/lib/python3.8/sre_parse.py", line 443, in _parse_sub
    itemsappend(_parse(source, state, verbose, nested + 1,
  File "/usr/lib/python3.8/sre_parse.py", line 525, in _parse
    code = _escape(source, this, state)
  File "/usr/lib/python3.8/sre_parse.py", line 426, in _escape
    raise source.error("bad escape %s" % escape, len(escape))
re.error: bad escape \p at position 0

Как видно модуль re не поддерживает \p (соответствие определенным Unicode Properties, используется для удобной работы с юникод в RE).

Как исправить?

Python 3.8


Ответы (1 шт):

Автор решения: MaxU

Попопробуйте использовать модуль regex:

import regex

In [137]: regex.match(r'\p{script=Latin}', "Latin text")
Out[137]: <regex.Match object; span=(0, 1), match='L'>
→ Ссылка