регулярное выражение Python
Регулярное выражение Python
В этом руководстве вы узнаете о регулярных выражениях (RegEx) и используете модуль Python re для работы с RegEx (с помощью примеров).
A Регистрация улар Ex Нажатие (RegEx) — это последовательность символов, определяющая шаблон поиска. Например,
06
Приведенный выше код определяет шаблон RegEx. Шаблон:любая строка из пяти букв, начинающаяся с a. и заканчивая s .
Шаблон, определенный с помощью RegEx, можно использовать для сопоставления со строкой.
Выражение | Строка | Соответствует? |
---|---|---|
02 | 17 | Нет совпадений |
25 | Соответствие | |
34 | Соответствие | |
43 | Нет совпадений | |
57 | Нет совпадений |
В Python есть модуль с именем 66
. для работы с RegEx. Вот пример:
15пре>Здесь мы использовали
<час>70
функция для поиска по шаблону внутри test_string . Метод возвращает объект соответствия, если поиск успешен. Если нет, возвращается85
.Есть несколько других функций, определенных в re модуль для работы с RegEx. Прежде чем мы рассмотрим это, давайте узнаем о самих регулярных выражениях.
Если вы уже знакомы с основами RegEx, перейдите к Python RegEx.
<час>Укажите шаблон с помощью регулярного выражения
Для указания регулярных выражений используются метасимволы. В приведенном выше примере
<час>99
и100
являются метасимволами.Метасимволы
Метасимволы — это символы, интерпретируемые механизмом RegEx особым образом. Вот список метасимволов:
[] . ^ $ * + ? {} () \ |
<час>
110
- Квадратные скобкиКвадратные скобки определяют набор символов, которые вы хотите сопоставить.
Выражение | Строка | Соответствует? |
---|---|---|
122 | 133 | 1 совпадение |
145 | 2 совпадения | |
150 | Нет совпадений | |
160 | 5 совпадений |
Здесь 172
будет соответствовать, если строка, которую вы пытаетесь сопоставить, содержит любой из 184
, 193
или 208
.
Вы также можете указать диапазон символов, используя 211
внутри квадратных скобок.
225
совпадает с239
.242
совпадает с251
.269
совпадает с275
.
Вы можете дополнить (инвертировать) набор символов, используя знак вставки 287
символ в начале квадратной скобки.
297
означает любой символ, кроме a или b или с .307
означает любой нецифровой символ.
318
- Период
Точка соответствует любому одиночному символу (кроме символа новой строки 325
). ).
Выражение | Строка | Соответствует? |
---|---|---|
334 | 345 | Нет совпадений |
351 | 1 совпадение | |
363 | 1 совпадение | |
373 | 2 совпадения (содержит 4 символа) |
386
- Каретка
Символ вставки 397
используется для проверки того, начинается ли строка с определенный персонаж.
Выражение | Строка | Соответствует? |
---|---|---|
408 | 416 | 1 совпадение |
421 | 1 совпадение | |
434 | Нет совпадений | |
442 | 459 | 1 совпадение |
466 | Нет совпадений (начинается с 476 но без 480 ) |
496
- Доллар
Символ доллара 506
используется для проверки того, что строка заканчивается на определенный персонаж.
Выражение | Строка | Соответствует? |
---|---|---|
519 | 521 | 1 совпадение |
535 | 1 совпадение | |
548 | Нет совпадений |
555
- Пометить
Символ звезды 563
соответствует нулю или более вхождений оставшегося шаблона.
Выражение | Строка | Соответствует? |
---|---|---|
578 | 582 | 1 совпадение |
592 | 1 совпадение | |
607 | 1 совпадение | |
614 | Нет соответствия (627 не сопровождается 634 ) | |
645 | 1 совпадение |
650
- Плюс
Символ плюса 665
соответствует одному или нескольким вхождениям оставшегося шаблона.
Выражение | Строка | Соответствует? |
---|---|---|
677 | 686 | Нет соответствия (нет 690 персонаж) |
709 | 1 совпадение | |
714 | 1 совпадение | |
728 | Нет совпадений (за a не следует n) | |
732 | 1 совпадение |
741
- Вопросительный знак
Знак вопроса 750
соответствует нулю или одному вхождению оставшегося шаблона.
Выражение | Строка | Соответствует? |
---|---|---|
762 | 776 | 1 совпадение |
789 | 1 совпадение | |
793 | Нет совпадений (более одного 800 персонаж) | |
812 | Нет совпадений (за a не следует n) | |
827 | 1 совпадение |
836
- Брекеты
Рассмотрим этот код:841
. Это означает, по крайней мере, n , и не более m повторений шаблона, оставленного ему.
Выражение | Строка | Соответствует? |
---|---|---|
852 | 868 | Нет совпадений |
872 | 1 совпадение (в 883 ) | |
894 | 2 совпадения (в 902 и 919 ) | |
920 | 2 совпадения (в 930 и 940 ) |
Давайте попробуем еще один пример. Это регулярное выражение 951
соответствует как минимум 2 цифрам, но не более 4 цифрам
Выражение | Строка | Соответствует? |
---|---|---|
965 | 977 | 1 совпадение (совпадение по адресу 988 ) |
994 | 3 совпадения (1006 , 1016 , 1029 ) | |
1030 | Нет совпадений |
1041
- Чередование
Вертикальная полоса 1059
используется для чередования (1064
оператор).
Выражение | Строка | Соответствует? |
---|---|---|
1077 | 1085 | Нет совпадений |
1092 | 1 совпадение (совпадение по адресу 1109 ) | |
1119 | 3 совпадения (в 1123 ) |
Здесь 1139
соответствует любой строке, содержащей либо a или b
1140
- Группа
Скобки 1152
используется для группировки подшаблонов. Например, 1162
соответствует любой строке, которая соответствует либо a или b или с затем xz
Выражение | Строка | Соответствует? |
---|---|---|
1178 | 1181 | Нет совпадений |
1196 | 1 совпадение (совпадение по адресу 1206 ) | |
1211 | 2 совпадения (в 1223 ) |
1235
- Обратная косая черта
Люфт 1241
используется для экранирования различных символов, включая все метасимволы. Например,
1254
соответствует, если строка содержит 1260
за которым следует 1275
. Здесь 1288
не интерпретируется движком RegEx особым образом.
Если вы не уверены, имеет ли символ особое значение или нет, вы можете указать 1293
перед ним. Это гарантирует, что с персонажем не обращаются особым образом.
Особые последовательности
Специальные последовательности облегчают написание часто используемых шаблонов. Вот список специальных последовательностей:
1308
- Соответствует, если указанные символы находятся в начале строки.
Выражение | Строка | Соответствует? |
---|---|---|
1311 | 1329 | Соответствие |
1333 | Нет совпадений |
1340
- Соответствует, если указанные символы находятся в начале или в конце слова.
Выражение | Строка | Соответствует? |
---|---|---|
1354 | 1361 | Соответствие |
1373 | Соответствие | |
1384 | Нет совпадений | |
1393 | 1406 | Соответствие |
1419 | Соответствие | |
1422 | Нет совпадений |
1433
- Напротив 1443
. Соответствует, если указанные символы не в начале или в конце слова.
Выражение | Строка | Соответствует? |
---|---|---|
1455 | 1460 | Нет совпадений |
1479 | Нет совпадений | |
1485 | Соответствие | |
1495 | 1501 | Нет совпадений |
1512 | Нет совпадений | |
1526 | Соответствие |
1538
- Соответствует любой десятичной цифре. Эквивалентно 1546
Выражение | Строка | Соответствует? |
---|---|---|
1552 | 1561 | 3 совпадения (в 1571 ) |
1581 | Нет совпадений |
1592
- Соответствует любой недесятичной цифре. Эквивалентно 1609
Выражение | Строка | Соответствует? |
---|---|---|
1610 | 1621 | 3 совпадения (в 1635 ) |
1640 | Нет совпадений |
1650
- Соответствует, если строка содержит любой символ пробела. Эквивалентно 1663
.
Выражение | Строка | Соответствует? |
---|---|---|
1671 | 1681 | 1 совпадение |
1690 | Нет совпадений |
1704
- Соответствует, если строка содержит любой непробельный символ. Эквивалентно 1710
.
Выражение | Строка | Соответствует? |
---|---|---|
1726 | 1735 | 2 совпадения (в 1742 ) |
1750 | Нет совпадений |
1764
- Соответствует любому буквенно-цифровому символу (цифры и буквы). Эквивалентно 1772
. Кстати, подчеркните 1780
также считается буквенно-цифровым символом.
Выражение | Строка | Соответствует? |
---|---|---|
1793 | 1805 | 3 совпадения (в 1811 ) |
1821 | Нет совпадений |
1839
- Соответствует любому небуквенно-цифровому символу. Эквивалентно 1849
Выражение | Строка | Соответствует? |
---|---|---|
1854 | 1866 | 1 совпадение (в 1878 ) |
1884 | Нет совпадений |
1897
- Соответствует, если указанные символы находятся в конце строки.
Выражение | Строка | Соответствует? |
---|---|---|
1903 | 1918 | 1 совпадение |
1922 | Нет совпадений | |
1934 | Нет совпадений |
Совет: Для создания и тестирования регулярных выражений вы можете использовать инструменты тестирования регулярных выражений, такие как regex101. Этот инструмент не только поможет вам в создании регулярных выражений, но и поможет вам изучить их.
Теперь вы понимаете основы RegEx, давайте обсудим, как использовать RegEx в вашем коде Python.
<час>Регулярное выражение Python
В Python есть модуль с именем 1942
. для работы с регулярными выражениями. Чтобы использовать его, нам нужно импортировать модуль.
23
Модуль определяет несколько функций и констант для работы с RegEx.
<час>re.findall()
1951
метод возвращает список строк, содержащих все совпадения.
Пример 1:re.findall()
37
Если шаблон не найден, 1960
возвращает пустой список.
re.split()
1973
метод разбивает строку, в которой есть совпадение, и возвращает список строк, в которых произошло разбиение.
Пример 2:re.split()
45
Если шаблон не найден, 1983
возвращает список, содержащий исходную строку.
Вы можете пройти 1997
аргумент для 2004
метод. Это максимальное количество разделений, которое может произойти.
53
Кстати, значение по умолчанию для 2016
0; что означает все возможные разделения.
re.sub()
Синтаксис 2027
это:
66
Метод возвращает строку, в которой совпадающие вхождения заменены содержимым replace. переменная.
<час>Пример 3:re.sub()
78
Если шаблон не найден, 2037
возвращает исходную строку.
Вы можете передать count в качестве четвертого параметра для 2049
метод. Если его опустить, результатом будет 0. Это заменит все вхождения.
85<час>
re.subn()
2052
похож на 2062
за исключением того, что он возвращает кортеж из 2 элементов, содержащих новую строку и количество сделанных замен.
Пример 4:re.subn()
95<час>
поиск()
2076
Метод принимает два аргумента:шаблон и строку. Метод ищет первое место, где шаблон RegEx создает совпадение со строкой.
Если поиск успешен, 2087
возвращает объект соответствия; если нет, возвращается 2098
.
102<час>
Пример 5:re.search()
119
Здесь соответствует содержит объект соответствия.
<час>Сопоставить объект
Вы можете получить методы и атрибуты объекта соответствия, используя функцию dir().
Вот некоторые из часто используемых методов и атрибутов объектов сопоставления:
<час>match.group()
2103
метод возвращает часть строки, где есть совпадение.
Пример 6. Соответствие объекту
125
Здесь соответствует переменная содержит объект соответствия.
Наш шаблон 2119
имеет две подгруппы 2125
и 2138
. Вы можете получить часть строки этих подгрупп в скобках. Вот как:
139<час>
match.start(), match.end() и match.span()
2144
Функция возвращает индекс начала совпадающей подстроки. Точно так же 2156
возвращает конечный индекс совпадающей подстроки.
141
2169
функция возвращает кортеж, содержащий начальный и конечный индексы совпадающей части.
154<час>
match.re и match.string
2171
атрибут сопоставленного объекта возвращает объект регулярного выражения. Точно так же 2189
атрибут возвращает переданную строку.
161<час>
Мы рассмотрели все часто используемые методы, определенные в 2195
. модуль. Если вы хотите узнать больше, посетите модуль Python 3 re.
Использование префикса r перед RegEx
Когда r или R префикс используется перед регулярным выражением, это означает необработанную строку. Например, 2204
новая строка, тогда как 2214
означает два символа:обратную косую черту 2224
за которым следует 2235
.
Люфт 2242
используется для экранирования различных символов, включая все метасимволы. Однако, используя r префикс составляет 2250
относиться как к обычному персонажу.
Пример 7:Необработанная строка с префиксом r
174
Python