Чтение онлайн

на главную - закладки

Жанры

Язык программирования Python
Шрифт:

Символы, имеющие специальное значение в записи регулярных выражений:

Символ Что обозначает в регулярном выражении

".» Любой символ

"^" Начало строки

"$" Конец строки

"*" Повторение фрагмента нуль или более раз (жадное)

«+» Повторение фрагмента один или более раз (жадное)

"?» Предыдущий фрагмент либо присутствует, либо отсутствует

«{m,n}» Повторение предыдущего фрагмента от m до n раз включительно (жадное)

«[…]» Любой символ из набора в скобках. Можно задавать диапазоны символов с идущими подряд кодами, например: a–z

«[^…]» Любой символ не из набора в скобках

"\" Обратная косая черта отменяет специальное значение следующего за ней символа

"|" Фрагмент справа или фрагмент слева

"*?» Повторение фрагмента нуль или более раз (не жадное)

«+?» Повторение фрагмента один или более раз (не жадное)

«{m,n}?» Повторение предыдущего фрагмента от m до n раз включительно (не жадное)

Если A и B — регулярные выражения, то их конкатенация AB является новым регулярным выражением, причем конкатенация строк a и b будет удовлетворять AB, если a удовлетворяет A и b удовлетворяет B. Можно считать, что конкатенация — основной способ составления регулярных выражений.

Скобки, описанные ниже, применяются для задания приоритетов и выделения групп (фрагментов текста, которые потом можно получить по номеру или из словаря, и даже сослаться в том же регулярном выражении).

Алгоритм, который сопоставляет строки с регулярным выражением, проверяет соответствие того или иного фрагмента строки регулярному выражению. Например, строка «a» соответствует регулярному выражению «[a–z]», строка «fruit» соответствует «fruit|vegetable», а вот строка «apple» не соответствует шаблону «pineapple».

В таблице ниже вместо регвыр может быть записано регулярное выражение, вместо имя — идентификатор, а флаги будут рассмотрены ниже.

Обозначение Описание

«(регвыр)» Обособляет регулярное выражение в скобках и выделяет группу

«(?:регвыр)» Обособляет регулярное выражение в скобках без выделения группы

«(?=регвыр)» Взгляд вперед: строка должна соответствовать заданному регулярному выражению, но дальнейшее сопоставление с шаблоном начнется с того же места

«(?!регвыр)» То же, но с отрицанием соответствия

«(?<=регвыр)» Взгляд назад: строка должна соответствовать, если до этого момента соответствует регулярному выражению. Не занимает места в строке, к которой применяется шаблон. Параметр регвыр должен быть фиксированной длины (то есть, без «+» и "*")

«(?<!регвыр)» То же, но с отрицанием соответствия

«(?P<имя>регвыр)» Выделяет именованную группу с именем имя

«(?P=имя)» Точно соответствует выделенной ранее именованной группе с именем имя

«(?#регвыр)» Комментарий (игнорируется)

«(?(имя)рв1|рв2)» Если группа с номером или именем имя оказалась определена, результатом будет сопоставление с рв1, иначе — c рв2. Часть |рв2 может отсутствовать

«(?флаг)» Задает флаг для всего данного регулярного выражения. Флаги необходимо задавать в начале шаблона

В таблице ниже описаны специальные последовательности, использующие обратную косую черту:

Последовательность Чему соответствует

"\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. Сопоставление начинается от начала строки.

Поделиться:
Популярные книги

Компас желаний

Кас Маркус
8. Артефактор
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Компас желаний

Я до сих пор князь. Книга XXII

Дрейк Сириус
22. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор князь. Книга XXII

Ваантан

Кораблев Родион
10. Другая сторона
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Ваантан

Черный Маг Императора 11

Герда Александр
11. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Черный Маг Императора 11

Пустоши

Сай Ярослав
1. Медорфенов
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Пустоши

Бояръ-Аниме. Газлайтер. Том 30

Володин Григорий Григорьевич
30. История Телепата
Фантастика:
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 30

Мужчина моей судьбы

Ардова Алиса
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Мужчина моей судьбы

Кодекс Охотника. Книга XXXVI

Винокуров Юрий
36. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXVI

Наследник старого рода

Шелег Дмитрий Витальевич
1. Живой лёд
Фантастика:
фэнтези
8.19
рейтинг книги
Наследник старого рода

Новые горизонты

Лисина Александра
5. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Новые горизонты

Кодекс Охотника. Книга XXXII

Винокуров Юрий
32. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXII

Законы Рода. Том 13

Мельник Андрей
13. Граф Берестьев
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 13

Законы Рода. Том 2

Мельник Андрей
2. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 2

Старшеклассник без клана. Апелляция кибер аутсайдера

Афанасьев Семен
1. Старшеклассник без клана. Апелляция аутсайдера
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Старшеклассник без клана. Апелляция кибер аутсайдера