Последовательность |
Чему соответствует |
"\1" – "\9" |
Группа с указанным номером. Группы нумеруются, начиная с 1 |
"\A" |
Промежуток перед началом всей строки (почти аналогично "^" ) |
"\Z" |
Промежуток перед концом всей строки (почти аналогично "$" ) |
"\b" |
Промежуток между символами перед словом или после него |
"\B" |
Наоборот, не соответствует промежутку между символами на границе слова |
"\d" |
Цифра. Аналогично «[0–9] » |
"\s" |
Любой пробельный символ. Аналогично « [\t\n\r\f\v] » |
"\S" |
Любой непробельный символ. Аналогично « [^\t\n\r\f\v] » |
"\w" |
Любая цифра или буква (зависит от флага LOCALE ) |
"\W" |
Любой символ, не являющийся цифрой или буквой (зависит от флага LOCALE ) |
Флаги, используемые с регулярными выражениями:
"(?i)", re.I, re.IGNORECASE
Сопоставление проводится без учета регистра букв.
"(?L)", re.L, re.LOCALE
Влияет на определение буквы в "\w"
, "\W"
, "\b"
, "\B"
в зависимости от текущей культурной среды (locale).
"(?m)", re.M, re.MULTILINE
Если этот флаг задан, "^"
и "$"
соответствуют началу и концу любой строки.
"(?s)", re.S, re.DOTALL
Если задан, "."
соответствует также и символу конца строки "\n"
.
"(?x)", re.X, re.VERBOSE
Если задан, пробельные символы, не экранированные в шаблоне обратной косой чертой, являются незначащими, а все, что расположено после символа "#"
, — комментарии. Позволяет записывать регулярное выражение в несколько строк для улучшения его читаемости и записи комментариев.
"(?u)", re.U, re.UNICODE
В шаблоне и в строке использован Unicode.
В результате успешной компиляции шаблона функцией re.compile()
получается шаблон–объект (он именуется SRE_Pattern
), который имеет несколько методов, некоторые из них будут рассмотрены. Как обычно, подробности и информация о дополнительных аргументах — в документации по Python.
match(s)
Сопоставляет строку s
с шаблоном, возвращая в случае удачного сопоставления объект с результатом сравнения (объект SRE_Match
). В случае неудачи возвращает None. Сопоставление начинается от начала строки.
search(s)
Аналогичен match(s)
, но ищет подходящую подстроку по всей строке s
.
split(s[, maxsplit=0])
Разбивает строку на подстроки, разделенные подстроками, заданными шаблоном. Если в шаблоне выделены группы, они попадут в результирующий список, перемежаясь с подстроками между разделителями. Если указан maxsplit
, будет произведено не более maxsplit
разбиений.
findall(s)
Ищет все неперекрывающиеся подстроки s
, удовлетворяющие шаблону.
finditer(s)
Возвращает итератор по объектам с результатами сравнения для всех неперекрывающихся подстрок, удовлетворяющих шаблону.
sub(repl, s)
Заменяет в строке s
все (или только count
, если он задан) вхождения неперекрывающихся подстрок, удовлетворяющих шаблону, на строку, заданную с помощью repl
. В качестве repl
может выступать строка или функция. Возвращает строку с выполненными заменами. В первом случае строка repl
подставляется не просто так, а интерпретируется с заменой вхождений "\номер"
на группу с соответствующим номером и вхождений "\g<���имя>"
на группу с номером или именем имя. В случае, когда repl
— функция, ей передается объект с результатом каждого успешного сопоставления, а из нее возвращается строка для замены.
subn(repl, s)
Аналогичен sub()
, но возвращает кортеж из строки с выполненными заменами и числа замен.
В следующем примере строка разбивается на подстроки по заданному шаблону:
>>> import re
>>> delim_re = re.compile(r"[:,;]")
>>> text = "This,is;example"
>>> print delim_re.split(text)
['This', 'is', 'example']
А теперь можно узнать, чем именно были разбиты строки:
>>> delim_re = re.compile(r"([:,;])")
>>> print delim_re.split(text)
['This', ',', 'is', ';', 'example']
Владение регулярными выражениями может существенно ускорить построение алгоритмов для обработки данных. Лучше всего познакомиться с шаблонами на конкретных примерах:
r"\b\w+\b"
Соответствует слову из букв и знаков подчеркивания.
r"[+-]?\d+"
Читать дальше
Конец ознакомительного отрывка
Купить книгу