все Python 3reпонятие
Флаги re
флаги
Флаги изменяют поведение паттерна: регистр, многострочность, совпадение точки с \n, подробный синтаксис.
Синтаксис
re.IGNORECASE (re.I), re.MULTILINE (re.M), re.DOTALL (re.S), re.VERBOSE (re.X)
Флаги не перекрывают друг друга: re.M меняет смысл только ^ и $, а чтобы точка начала ловить перевод строки, нужен именно re.S. Вторая ловушка — позиция аргумента: у re.sub() перед flags идёт count, а у re.split() — maxsplit, так что флаг, переданный без имени параметра, уйдёт в счётчик (с 3.13 такой позиционный вызов ещё и даёт DeprecationWarning); а у скомпилированного паттерна флаги уже зашиты, и p.match(s, re.I) поймёт re.I как начальную позицию поиска.
Примеры
import re
re.findall(r'hello', 'Hello HELLO', re.I) # → ['Hello', 'HELLO']
re.findall(r'^\d', '1\n2\n3', re.M) # → ['1', '2', '3']
re.match(r'.+', 'a\nb', re.S).group() # → 'a\nb'
pat = re.compile(r'''
\d+ # цифры
[a-z] # буква
''', re.X)
pat.findall('1a 2b 3') # → ['1a', '2b']
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности