Флаги, используемые для компиляции регулярного выражения.
Содержание:
re.A
,
re.ASCII
:
Флаг
re.A
или
re.ASCII
заставляет
\w
,
\W
,
\b
,
\B
,
\d
,
\D
,
\s
и
\S
выполнить только ASCII соответствие вместо полного соответствия Unicode. Имеет значение только для шаблонов
строк Юникода и игнорируется для шаблонов
байтов. Соответствует встроенному флагу
(?a)
.
Обратите внимание, что для обратной совместимости флаг re.U
все еще существует, как и его синоним re.UNICODE
и его встроенный аналог (?u)
, но они избыточны в Python 3. По умолчанию совпадения являются строками Unicode, а для байтов совпадение Unicode не допускается.
re.DEBUG
:
Флаг re.DEBUG
показывает отладочную информацию о скомпилированном выражении. Соответствующего встроенного флага НЕТ.
re.I
,
re.IGNORECASE
:
Флаг re.I
или re.IGNORECASE
выполняет сопоставление без учета регистра. Выражения типа [A-Z]
также будут соответствовать строчным буквам. Обеспечивает полное соответствие кодировке Unicode (т.е. Й
будет сопоставляться с й
), если только не используется флаг re.ASCII
. Текущий языковой стандарт не изменяет действие этого флага, если только не используется флаг re.LOCALE
. Соответствует встроенному флагу (?i)
.
Обратите внимание, что когда шаблоны Unicode [a-z]
или [A-Z]
используются в сочетании с флагом IGNORECASE
, они будут соответствовать 52 буквам ASCII и 4 дополнительным не-ASCII буквам: 'İ'
- U+0130, Латинская заглавная буква 'I'
с точкой выше, 'ı'
- U+0131, Латинская маленькая буква без точки 'i'
, 'ſ'
- U+017F, Латинская маленькая буква long s) и 'K'
- U+212A, знак Кельвина. Если используется флаг re.ASCII
, то совпадают только буквы a
- z
и A
- Z
.
re.L
,
re.LOCALE
:
Флаг
re.L
или
re.LOCALE
делает сопоставление
\w
,
\W
,
\b
,
\B
и без учета регистра, зависимым от текущей локали. Этот флаг может использоваться только с шаблонами
байтов. Использование этого флага не рекомендуется, так как механизм локализации очень ненадежен и он работает только с 8-битными локалями. Сопоставление Юникода уже включено по умолчанию в Python 3 для шаблонов
строк Unicode и способно обрабатывать различные языки/локали. Соответствует встроенному флагу
(?L)
.
- Флаг
re.LOCALE
может использоваться только с байтовыми шаблонами и не совместим с флагом re.ASCII
. - Флаг
re.LOCALE
не зависит от локали во время компиляции и влияет на результат сопоставления только в момент сопоставления.
re.M
,
re.MULTILINE
:
- символ шаблоне
'^'
в шаблоне совпадает с позицией начала строки и с позицией начала каждой строки, сразу после каждой новой строки. - символ шаблона
'$'
совпадает с позицией конца строки и с позицией конца каждой строки, непосредственно перед каждой новой строкой.
По умолчанию '^'
совпадает только с позицией начала строки, а '$'
только с позицией конца строки и непосредственно перед новой строкой (если есть) в конце строки. Флаг re.MULTILINE
соответствует встроенному флагу (?m)
.
re.S
,
re.DOTALL
:
Флаг re.S
или re.DOTALL
делает так, что бы специальный символ '.'
- точка соответствовал любому символу вообще, включая новую строку '\n'
. Без этого флага, специальный символ '.'
- точка будет соответствовать чему угодно, кроме новой строки. Флаг re.DOTALL
соответствует встроенному флагу (?s)
.
re.X
,
re.VERBOSE
:
Флаг re.X
или re.VERBOSE
позволяет писать регулярные выражения, которые выглядят лучше и удобнее для чтения, позволяя визуально разделять логические разделы шаблона и добавлять комментарии. Пробельные символы в шаблоне игнорируются, за исключением случаев, когда они находятся в символьном классе или когда им предшествует неэкранированная обратная косая черта, или внутри токенов, таких как *?
, (?:
или (?P<...>
. Если строка содержит символ #
, который не входит в символьный класс и которому не предшествует неэкранированная обратная косая черта, то все символы от крайнего левого положения символа #
до конца строки игнорируются.
Это означает, что два следующих объекта регулярного выражения, которые соответствуют десятичному числу, функционально равны:
a = re.compile(r"""\d + # the integral part
\. # the decimal point
\d * # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")
Флаг re.VERBOSE
соответствует встроенному флагу (?x)
.