Анархия всегда приводит к абсолютизму (Наполеон I).

Python 3 – Регулярные выражения

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Python 3 - Регулярные выражения
Регулярное выражение  –  это специальная последовательность символов, которая позволяет соответствовать или найти другие строки или наборы строк, используя специализированный синтаксис проведен в шаблоне. Регулярные выражения широко используются в мире UNIX.

Модуль re обеспечивает полную поддержку Perl-подобных регулярных выражений в Python. Модуль re вызывает исключение re.error, если произошла ошибка во время компиляции или с помощью регулярного выражения.

Мы охватим две важные функции, которые будут использоваться для обработки регулярных выражений. Тем не менее, одна небольшая вещь: Есть различные символы, которые будут иметь особое значение, когда они используются в регулярном выражении. Во избежание путаницы при работе с регулярными выражениями, мы будем использовать строки Raw как r’expression’.

Основные модели, которые соответствуют одиночным символам

Выражение & Соответствие
1 a, X, 9, < – обычные символы просто соответствуют сами себе точно.
2 . (a period) – соответствует любому символу, за исключением символа новой строки «\n»
3 \w – соответствует символу “слово”: букве или цифры или подчеркиванию [A-Za-z0-9_].
4 \W – соответствует любому символу, кроме буквы.
5 \b – граница между словом и несловообразующим
6 \s – соответствует одному символу пробела – пробел, перевод строки, возврат, вкладка
7 \S – соответствует любому символу.
8 \t, \n, \r – табуляции, новая строка, возврат
9 \d – десятичная цифра [0-9]
10 ^ – соответствует началу строки
11 $ – соответствует концу строки
12 \ – блокирует «особость» символа.

Флаги компиляции

Флаги компиляции позволяют изменить некоторые аспекты того, как работают регулярные выражения. Флаги доступны в модуле re под двумя именами, длинное имя, например, как IGNORECASE и короткое, в одно-буквенном виде, такие как I.

Флаг и Значение
1 ASCII, A – Делает несколько побегов, как \w, \b, \s и \d. Сравнение только для ASCII символов с соответствующим свойством.
2 DOTALL, S – Сделает, соответствует любому символу, включая символ новой строки
3 IGNORECASE, I – Сравнение регистронезависимых символов
4 LOCALE, L – Локальное сравнение
5 MULTILINE, M – Сравнение многострочных, используя ^ и $
6 VERBOSE, X (for ‘extended’) – Включить многословные REs, которые могут быть организованы более чисто и понятно

Функция match

Эта функция пытается соответствовать RE pattern для string с дополнительными flags.

Синтаксис этой функции:

 

Вот описание параметров:

Параметр & Описание
1 pattern – Это регулярное выражение, которому необходимо соответствовать.
2 string – Это строка, которая будет искать, чтобы соответствовать шаблону в начале строки.
3 flags – Вы можете задать различные флаги с помощью побитового OR (|). Это модификаторы, которые перечислены в таблице ниже.

 

Функция Re.match возвращает объект match если успех, и None если провал. Мы используем функции usegroup(num) или groups() объекта match, чтобы получить согласованное выражение.

Метод соответствия объекта и описание
1 group(num = 0) – Этот метод возвращает все сравнения (или конкретную подгруппу num)
2 groups() – Этот метод возвращает все соответствующие подгруппы в кортеже (пусто, если не найдено)

Пример

 

Когда этот код выполнится, он выведет следующий результат:

Функция search

Эта функция ищет первое вхождение pattern re в string с дополнительными flags.

Синтаксис этой функции:

 

Вот описание параметров:

Параметр & Описание
1 pattern – Это регулярное выражение, которому необходимо соответствовать.
2 string – Это строка, которая будет искать, чтобы соответствовать шаблону в любом месте строки.
3 flags – Вы можете задать различные флаги с помощью побитового OR (|). Эти модификаторы, которые перечислены в таблице ниже.

Функция Re.search возвращает объект match если успех, и None если провал. Мы используем функцию group(num) или groups() объекта match, чтобы получить совпадающее выражение.

Метод соответствия объекта и описание
1 group(num = 0) – Этот метод возвращает все сравнения (или конкретную подгруппу num)
2 groups() – Этот метод возвращает все соответствующие подгруппе в кортеже (пусто, если не найдено)

Пример

 

Когда этот код выполнится, он выведет следующий результат:

Соответствие поиску версий

Python предлагает две различные примитивные операции, основанные на регулярных выражениях: match проверка на сравнение только в начале строки, в то время как search проверка на сравнение где – нибудь в строке (это то, что Perl делает по умолчанию).

Пример

 

Когда этот код выполнится, он выведет следующий результат:

Поиск и замена

Одним из наиболее важных методов re, которые используют регулярные выражения является sub.

Синтаксис

 

Этот метод заменяет все вхождения RE pattern в string на repl, заменив все вхождения, если max не предусмотрен. Этот метод возвращает модифицированную строку.

Пример

 

Когда этот код выполнится, он выведет следующий результат:

Модификаторы регулярных выражений: Вариант flag

Регулярное выражение константы могут включать в себя необязательный модификатор для управления различными аспектами сравнения. Модификаторы указаны в качестве дополнительного флага. Вы можете предоставить несколько модификаторов с помощью исключающего OR (|), как показано выше, и может быть представлена ​​одним из следующих:

Модификатор & Описание
1 re.I – Выполняет регистронезависимое согласование.
2 re.L – Интерпретирует слова в соответствии с текущей локализацией. Эта интерпретация влияет на алфавитную группу (\w и \W), а также слово граничное поведение (\b и \В).
3 re.M – Заставляет $ соответствует концу строки (а не только конец строки) и делает ^ совпадать с началом любой строки (а не только в начале строки).
4 re.S – Делает период (точка) соответствовать любому символу, включая символ новой строки.
5 re.U – Интерпретирует буквы в соответствии с набором символов Юникода. Этот флаг влияет на поведение \w, \W, \b, \B.
6 re.X – Разрешает «cuter» синтаксис регулярных выражений. Он игнорирует пробелы (за исключением внутри множества [] или при замаскированой обратной косой чертой) и рассматривает неэкранированный # как маркер комментарий.

Шаблоны регулярных выражений

За исключением управляющих символов, (+ ? . * ^ $ ( ) [ ] { } | \), все символы совпадают сами. Вы можете избежать управляющего символа, предварив его с обратной косой чертой.

В следующей таблице перечислен синтаксис регулярных выражений, который доступен в Python:

Примеры регулярных выражений

Буквенные символы

Пример & Описание
1 python – Сравнение “python”.

Классы символов

Пример & Описание
1 [Рр]ython – Сравнение «Python» или «python»
2 rub[ye] – Сравнение «ruby» или «rube»
3 [aeiou] – Соответствует любому одной строчной гласной
4 [0-9] – Сравнение любой цифры; такой же, как [0123456789]
5 [a-z] – Соответствует любому строчной букве ASCII
6 [A-Z] – Сравнение любой заглавной букве ASCII
7 [a-zA-Z0-9]  – Сравнение любой из вышеперечисленных
8 [^aeiou] – Сравнение ничего, кроме нижнего регистра гласной
9 [^0-9] – Сравнение ничего, кроме цифр

Специальные классы символов

Пример & Описание
1 . – Соответствует любому символу, кроме символа новой строки
2 \ d – Сравнение цифры: [0-9]
3 \D – Сравнение не цифры: [^ 0-9]
4 \s – Сравнение символа пробела: [\t\r\n\f]
5 \S – Сравнение без пробела: [^ \t\r\n\f]
6 \w – Сравнение одного текстового символа: [A-Za-z0-9_]
7 \W – Сравнение несловесным символом: [^ A-Za-z0-9_]

Случаи повторения

Пример & Описание
1 ruby? – Совпадение «rub» или «ruby»: у – необязательно
2 ruby* – Совпадение «rub» плюс 0 или более y.
3 ruby+ – Совпадение «rub» плюс 1 или более y.
4 \d{3,} – Совпадение ровно 3 цифры
5 \ Д {3} – Совпадение 3 или более цифр
6 \d{3,5} – Совпадение 3, 4 или 5 цифр

Ненасытное повторение

Это соответствует наименьшее количество повторений:

Пример & Описание
1 <.*> – Жадное повторение: matches “<python>Perl>”
2 <.*?> – Из жадного в нежадный: matches “<python>” в “<python>Perl>”

Группировка с круглой скобкой

Пример & Описание
1 \D\d+ – Ни одна из групп: + повторяется \d
2 (\D\d)+ – Сгруппированные: + повторяет пару \D\d
3 ([Pp]ython(,)?)+ – Сравнение “Python”, “Python, python, python” и т.д.

Обратные

Это соответствует ранее согласованной группе:

Пример & Описание
1 ([Pp])ython&\1ails – Сравнение python&pails или Python&Pails
2 ([‘”])[^\1]*\1 – Одинарные- или двойные кавычки в строке. \1 – соответствует то, что в 1-й группе подобраны. \2 – Сравнение, что во 2-й группе соответствовал, и т. д.

Альтернативы

Пример & Описание
1 python|perl – Сравнение «python» или «perl»
2 rub(y|le) – Сравнение «ruby» или «ruble»
3 Python(!+|\?) – «Python», а затем один или более! или один?

Якоря

Необходимо для определения позиции соответствия.

Пример & Описание
1 ^Python – Сравнение «Python» в начале строки или внутренней линии
2 Python$ – Сравнение «Python» в конце строки или строки
3 \APython – Сравнение «Python» в начале строки
4 Python\Z – Сравнение «Python» в конце строки
5 \bPython\b – Сравнение «Python» на границе слова
6 \brub\B – \В является не словесной границей: Сравнение “rub” в “rube” и “ruby”, но не в одиночку
7 Python(?=!) – Сравнение «Python», если за ними следует восклицательным.
8 Python(?!!) – Сравнение «Python», если не последует восклицательный знак.

Специальный синтаксис со скобками

Пример & Описание
1 R(?#comment) – Сравнение “R”. Все остальное является комментарием
2 R(?i)uby – Без учета регистра при сопоставлении «uby»
3 R(?i:uby) – То же самое, что и выше
4 rub(?:y|le)) – Группировать только без создания обратной связи \1

 

Читайте также

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Простая логическая игра "Поймай кота". Задача игры окружить кота точками так, чтобы он не смог убежать с поля. Постигла неудача - начни игру снова!

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close