RegEx Python

RegEx или регулярное выражение - это последовательность символов, формирующих поисковый шаблон.

RegEx можно использовать для проверки того, содержит ли строка指定的 поисковый шаблон.

RegEx

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

импорт re модуль:

import re

RegEx в Python

импорт re после импорта модуля, можно начать использовать регулярные выражения:

Пример

Извлекает строку, чтобы проверить, начинается ли она с "China" и заканчивается ли на "country":

import re
txt = "China is a great country"
x = re.search("^China.*country$", txt)

Запуск примера

функции RegEx

re модуль предоставляет набор функций, позволяющих нам извлекать строки для соответствия шаблону:

функция Описание
findall возвращает список всех совпадений
search возвращает объект Match, если совпадение существует в любом месте строки
split возвращает список строк, разделенных на части при каждом совпадении
sub заменяет один или несколько совпадений строкой

метасимволы

метасимволы - это символы, имеющие специальное значение:

Символ Описание Пример TIY
[] группа символов "[a-m]" Попробуйте
\ демонстрирует специальную последовательность (можно также использовать для escaping специальных символов) "\d" Попробуйте
. любой символ (за исключением символа перевода строки) "he..o" Попробуйте
^ начинается "^hello" Попробуйте
$ оканчивается "world$" Попробуйте
* ноль или несколько раз "aix*" Попробуйте
+ один или несколько раз "aix+" Попробуйте
{} точное количество出现的次数 "al{2}" Попробуйте
| либо одно, либо другое "falls|stays" Попробуйте
()) Захват и группировка

Специальные последовательности

Специальные последовательности означают \ следом за любым символом из таблицы, имеющим специальное значение:

Символ Описание Пример TIY
\A Возвращает совпадение, если указанный символ находится в начале строки "\AThe" Попробуйте
\b Возвращает совпадение указанного символа, который находится в начале или конце слова r"\bain"
r"rain\b"
Попробуйте
Попробуйте
\B Возвращает совпадение указанного символа, который не находится в начале (или конце) слова r"\Bain"
r"rain\B"
Попробуйте
Попробуйте
\d Возвращает совпадение строки, содержащей цифры (цифры 0-9) "\d" Попробуйте
\D Возвращает совпадение строки, не содержащей цифр "\D" Попробуйте
\s Возвращает совпадение строки, содержащей пробельные символы "\s" Попробуйте
\S Возвращает совпадение строки, не содержащей пробельных символов "\S" Попробуйте
\w Возвращает совпадение, в котором строка содержит любые символы алфавита
(символы от A до Z, цифры от 0 до 9 и символ подчеркивания _)
"\w" Попробуйте
\W Возвращает совпадение, в котором строка не содержит никаких символов алфавита "\W" Попробуйте
\Z Возвращает совпадение, если указанный символ находится в конце строки "Spain\Z" Попробуйте

Сбор (Set)

Набор (Set) — это пара фигурных скобок [] внутри группы символов, имеющих особое значение:

Набор Описание Попробуйте
[arn] Возвращает совпадение, содержащее один из указанных символов (a, r или n) Попробуйте
[a-n] Возвращает совпадения всех маленьких символов между a и n Попробуйте
[^arn] Возвращает совпадения всех символов, кроме a, r и n Попробуйте
[0123] Возвращает совпадения, содержащие любые из указанных чисел (0, 1, 2 или 3) Попробуйте
[0-9] Возвращает совпадения всех чисел между 0 и 9 Попробуйте
[0-5][0-9] Возвращает совпадения всех чисел между 0 и 9 Попробуйте
[a-zA-Z] Возвращает совпадения всех символов между a и z, как больших, так и маленьких Попробуйте
[+] В наборе, +, *, ., |, (), $, {} не имеют особого значения, поэтому [+] означает: возвращает совпадения всех символов + в строке Попробуйте

Функция findall()

findall() Функция возвращает список, содержащий все совпадения.

Пример

Вывести список всех совпадений:

import re
str = "China is a great country"
x = re.findall("a", str)
print(x)

Запуск примера

Этот список содержит совпадения в порядке их нахождения.

Если совпадение не найдено, то возвращает пустой список:

Пример

Если совпадение не найдено, то возвращает пустой список:

import re
str = "China is a great country"
x = re.findall("USA", str)
print(x)

Запуск примера

Функция search()

search() Функция ищет совпадение в строке, и если совпадение существует, то возвращает объект Match.

Если есть несколько совпадений, то возвращает только первое совпадение:

Пример

Найти первый пробельный символ в строке:

import re
str = "China is a great country"
x = re.search("\s", str)
print("Позиция первого пробельного символа: ", x.start())

Запуск примера

Если совпадение не найдено, то возвращается значение None:

Пример

Выполните поиск без возврата совпадений:

import re
str = "China is a great country"
x = re.search("USA", str)
print(x)

Запуск примера

Функция split()

split() Функция возвращает список, в котором строка разрезается каждый раз при совпадении:

Пример

Разделите строку по каждому пробельному символу:

import re
str = "China is a great country"
x = re.split("\s", str)
print(x)

Запуск примера

Вы можете определить maxsplit Параметр для управления количеством разделений:

Пример

Разделите строку только в первый раз:

import re
str = "China is a great country"
x = re.split("\s", str, 1)
print(x)

Запуск примера

Функция sub()

sub() Функция заменяет совпадение на выбранный текст:

Пример

Замените каждый пробельный символ числом 9:

import re
str = "China is a great country"
x = re.sub("\s", "9", str)
print(x)

Запуск примера

Вы можете определить count Параметр для управления количеством замен:

Пример

Заменить первые два occurrences:

import re
str = "China is a great country"
x = re.sub("\s", "9", str, 2)
print(x)

Запуск примера

Объект Match

Объект Match - это объект, содержащий информацию о поиске и результатах.

Комментарий:Возвратное значение, если нет соответствий Noneвместо объекта Match.

Пример

Выполнение возвращает объект Match поисковой операции:

import re
str = "China is a great country"
x = re.search("a", str)
print(x) # будет напечатан объект

Запуск примера

Объект Match предоставляет атрибуты и методы для получения информации о поиске и результатах:

  • span() Возвращаемый кортеж содержит начало и конец соответствия
  • .string Возврат传入ной строки функции
  • group() Возврат части строки, соответствующей шаблону

Пример

Печать位置的 первого соответствия (начало и конец)

Поиск регулярного выражения, начинающегося с заглавной "C".

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.span())

Запуск примера

Пример

Печать传入ной строки функции:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.string)

Запуск примера

Пример

Печать части строки, соответствующей шаблону.

Поиск регулярного выражения, начинающегося с заглавной "C".

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.group())

Запуск примера

Комментарий:Возвратное значение, если нет соответствий Noneвместо объекта Match.