Сообщить об ошибке.

Флаги шаблона регулярного выражения Python

Флаги объекта регулярного выражения позволяют изменить некоторые аспекты работы регулярных выражений. Флаги доступны при компиляции шаблона регулярного выражения модуля re под двумя именами: длинное имя, например, re.IGNORECASE и короткая однобуквенная форма, например re.I. Несколько флагов в функции компиляции re.compile() могут быть заданы побитовым ИЛИ, например re.I | re.M.

re.I,
re.IGNORECASE
:

Флаг re.IGNORECASE выполняет сопоставление без учета регистра. Класс символов и буквенные строки будут соответствовать буквам, игнорируя регистр. Например шаблону [A-Z] тоже будут соответствовать строчные буквы. То есть строка 'Spam' будет соответствовать 'Spam', 'spam' или 'spAM'. Этот флаг не учитывает текущую локаль, но локаль будет учитываться, если также установите флаг re.LOCALE.

re.L,
re.LOCALE
:

Флаг re.LOCALE делает метасимволы \w, \W, \b и \B зависимыми от текущей локали, а не от базы данных Unicode.

Локали - это функция библиотеки языка C, предназначенная для написания программ, учитывающих языковые различия. Например, если обрабатывается текст на русском языке, то необходимо иметь возможность чтобы \w+ соответствовало словам, но \w соответствует только классу символов [A-Za-z] и не будет соответствовать й или "ё". Если система настроена правильно и выбран русский язык, некоторые функции языка C сообщат программе, что й также следует считать буквой. Установка флага re.LOCALE при компиляции регулярного выражения приведет к тому, что результирующий скомпилированный объект будет использовать эти функции C для \w. Компиляция будет происходить медленнее, но также позволяет \w+ сопоставлять русские слова, как и ожидается.

re.M,
re.MULTILINE
:

Об обозначении и использовании метасимволов '^' и '$' смотрите в разделе "Дополнительные метасимволы"

Обычно метасимвол '^' совпадает только с началом строки, а '$'совпадает только с концом строки и непосредственно перед новой строкой, если таковая имеется в конце строки. Когда задан флаг re.MULTILINE, '^' совпадает в начале строки и в начале каждой строки в строке, сразу после каждой новой строки. Аналогично метасимвол '$' совпадает либо в конце строки, либо в конце каждой строки, непосредственно перед каждой новой строкой.

re.NOFLAG:

Указывает, что флаг не применяется, значение равно 0. Этот флаг может использоваться как значение по умолчанию для ключевого аргумента функции или как базовое значение, которое будет условно объединено с другими флагами. Пример использования в качестве значения по умолчанию:

def myfunc(text, flag=re.NOFLAG):
    return re.match(text, flag)

Новое в Python 3.11.

re.S,
re.DOTALL
:

Флаг re.DOTALL заставляет специальный символ '.' соответствовать любому символу вообще, включая перевод строки '\n'. Без этого флага '.' будет соответствовать все, кроме новой строки.

re.A,
re.ASCII
:

Флаг re.ASCII заставляет \w, \W, \b, \B, \s и \S выполнять только ASCII-сопоставление вместо полного соответствия Unicode. Это имеет значение только для шаблонов Юникода и игнорируется для шаблонов байтов.

re.X,
re.VERBOSE
:

Флаг re.VERBOSE позволяет писать регулярные выражения, которые будут более читабельными, предоставляя больше гибкости в оформлении и форматировании. Когда флаг указан, пробел в строке регулярного выражения игнорируется, за исключением случаев, когда этот пробел находится в классе символов или ему предшествует не экранированный обратный слеш. Это позволяет более четко организовать отступы в шаблонах RegExp. Флаг re.VERBOSE также позволяет помещать комментарии в шаблоны с RegExp, которые будут игнорироваться движком. Комментарии помечаются символом '#'.

Пример шаблона с регулярным выражением, которое использует флаг re.VERBOSE:

charref = re.compile(r"""
 &[#]                # Start of a numeric entity reference
 (
     0[0-7]+         # Octal form
   | [0-9]+          # Decimal form
   | x[0-9a-fA-F]+   # Hexadecimal form
 )
 ;                   # Trailing semicolon
""", re.VERBOSE)