Python RegEx
RegEx або Regular Expression (регулярний вираз) – це послідовність символів, яка формує шаблон пошуку.
RegEx можна використовувати, щоб перевірити, чи містить рядок указаний шаблон пошуку.
Модуль RegEx
Python має вбудований пакет під назвою re, який можна використовувати для роботи з регулярними виразами.
Імпортуйте модуль re:
import re
RegEx в Python
Коли ви імпортували модуль re, ви можете почати використовувати регулярні вирази:
Приклад
Знайдіть рядок, щоб побачити, чи починається він на "The" і закінчується на "Spain":
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
Спробуйте самі »
RegEx Функції
Модуль re пропонує набір функцій, які дозволяють нам шукати відповідність у рядку:
| Функція | Опис |
|---|---|
| findall | Повертає список з усіма збігами |
| search | Повертає Match об’єкт, якщо є відповідність будь-де в рядку |
| split | Повертає список, де рядок було розділено при кожному збігу |
| sub | Замінює один або багато збігів рядком |
Метасимволи
Метасимволи – це символи зі спеціальним значенням:
| Символ | Опис | Приклад | Спробуй це |
|---|---|---|---|
| [] | Набір символів | "[a-m]" | Спробуй це » |
| \ | Сигналізує спеціальну послідовність (також може використовуватися для екранування спеціальних символів) | "\d" | Спробуй це » |
| . | Будь-який символ (крім символу нового рядка) | "he..o" | Спробуй це » |
| ^ | Починати з | "^hello" | Спробуй це » |
| $ | Закінчується на | "planet$" | Спробуй це » |
| * | Нуль або більше випадків | "he.*o" | Спробуй це » |
| + | Один або кілька випадків | "he.+o" | Спробуй це » |
| ? | Нуль або один раз | "he.?o" | Спробуй це » |
| {} | Точно вказана кількість повторень | "he.{2}o" | Спробуй це » |
| | | Або | "falls|stays" | Спробуй це » |
| () | Захоплення та групування |
Спеціальні послідовності
Спеціальна послідовність — це \, за якою йде один із символів у списку нижче, і вона має особливе значення:
| Символ | Опис | Приклад | Спробуй це |
|---|---|---|---|
| \A | Повертає збіг, якщо вказані символи знаходяться на початку рядка | "\AThe" | Спробуй це » |
| \b | Повертає збіг, якщо вказані символи знаходяться на початку або в кінці слова ("r" на початку гарантує, що рядок розглядається як "необроблений рядок") |
r"\bain" r"ain\b" |
Спробуй це » Спробуй це » |
| \B | Повертає збіг, якщо вказані символи присутні, але НЕ на початку (чи в кінці) слова ("r" на початку гарантує, що рядок розглядається як "необроблений рядок") |
r"\Bain" r"ain\B" |
Спробуй це » Спробуй це » |
| \d | Повертає збіг, якщо рядок містить цифри (числа з 0-9) | "\d" | Спробуй це » |
| \D | Повертає збіг, якщо рядок НЕ містить цифр | "\D" | Спробуй це » |
| \s | Повертає збіг, якщо рядок містить пробіл | "\s" | Спробуй це » |
| \S | Повертає збіг, якщо рядок НЕ містить пробілу | "\S" | Спробуй це » |
| \w | Повертає збіг, якщо рядок містить будь-які символи слова (символи від a до Z, цифри від 0 до 9 і символ підкреслення _) | "\w" | Спробуй це » |
| \W | Повертає збіг, якщо рядок НЕ містить символів слів | "\W" | Спробуй це » |
| \Z | Повертає збіг, якщо вказані символи знаходяться в кінці рядка | "Spain\Z" | Спробуй це » |
Набори
Набір – це набір символів у парі квадратних дужок [] зі спеціальним значенням:
| Набір | Опис | Спробуй це |
|---|---|---|
| [arn] | Повертає збіг, де один з указаних символів (a, r, або n) присутній |
Спробуй це » |
| [a-n] | Повертає збіг для будь-якого символу нижнього регістру в алфавітному порядку a та n |
Спробуй це » |
| [^arn] | Повертає збіг для будь-якого символу EXCEPT a, r та n |
Спробуй це » |
| [0123] | Повертає збіг будь-якої з указаних цифр (0, 1, 2, або 3) присутні |
Спробуй це » |
| [0-9] | Повертає збіг для будь-якої цифри між 0 та 9 |
Спробуй це » |
| [0-5][0-9] | Повертає збіг для будь-яких двозначних чисел від 00 до 59 |
Спробуй це » |
| [a-zA-Z] | Повертає збіг для будь-якого символу в алфавітному порядку від a до z, нижній регістр АБО верхній регістр |
Спробуй це » |
| [+] | У наборах +, *, ., |, (), $,{} не має спеціального значення, тому [+] означає: повернути збіг для будь-якого символа + у рядку |
Спробуй це » |
Функція findall()
Функція findall() повертає список з усіма збігами.
Приклад
Роздрукуйте список усіх збігів:
import re
txt = "The rain in Spain"
x = re.findall("ai", txt)
print(x)
Спробуйте самі »
Список містить збіги в порядку їх пошуку.
Якщо збігів не знайдено, повертається порожній список:
Приклад
Повертає порожній список, якщо відповідності не знайдено:
import re
txt = "The rain in Spain"
x = re.findall("Portugal", txt)
print(x)
Спробуйте самі »
Функція search()
Функція search() шукає відповідність у рядку та повертає Match об’єкт, якщо збіг є.
Якщо знайдено більше одного збігу, буде повернено лише перший збіг:
Приклад
Пошук першого пробілу в рядку:
import re
txt = "The rain in Spain"
x = re.search("\s", txt)
print("Перший символ пробілу знаходиться на місці:", x.start())
Спробуйте самі »
Якщо збігів не знайдено, повертається значення None:
Приклад
Здійсніть пошук, який не дає результатів:
import re
txt = "The rain in Spain"
x = re.search("Portugal", txt)
print(x)
Спробуйте самі »
Функція split()
Функція split() повертає список, де рядок було розділено при кожному збігу:
Приклад
Розділіть на кожен пробіл:
import re
txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)
Спробуйте самі »
Ви можете контролювати кількість входжень, вказавши параметр maxsplit:
Приклад
Розділіть рядок лише при першому вході:
import re
txt = "The rain in Spain"
x = re.split("\s", txt, 1)
print(x)
Спробуйте самі »
Функція sub()
Функція sub() замінює збіги текстом за вашим вибором:
Приклад
Замініть кожен пробіл цифрою 9:
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)
Спробуйте самі »
Ви можете контролювати кількість замін, вказавши параметр count:
Приклад
Замініть перші 2 входження:
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt, 2)
print(x)
Спробуйте самі »
Відповідність об’єкту
Об’єкт відповідності – це об’єкт, що містить інформацію про пошук і результат.
Примітка: Якщо відповідності немає, замість об’єкта відповідності буде повернено значення None.
Приклад
Виконайте пошук, який поверне об’єкт відповідності:
import re
txt = "The rain in Spain"
x = re.search("ai", txt)
print(x) #це надрукує об’єкт
Спробуйте самі »
Об’єкт Match має властивості та методи, які використовуються для отримання інформації про пошук і результат:
.span() повертає кортеж, що містить початкову та кінцеву позиції збігу..string повертає рядок, переданий у функцію.group() повертає частину рядка, де був збіг.
Приклад
Надрукуйте позицію (початкову та кінцеву позиції) першого збігу.
Регулярний вираз шукає будь-які слова, які починаються з верхнього регістру "S":
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())
Спробуйте самі »
Приклад
Надрукувати рядок, переданий у функцію:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)
Спробуйте самі »
Приклад
Надрукуйте частину рядка, де було збіг.
Регулярний вираз шукає будь-які слова, які починаються з верхнього регістру "S":
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())
Спробуйте самі »
Примітка: Якщо відповідності немає, замість об’єкта відповідності буде повернено значення None.

