Регулярні вирази Python – це просто

Регулярні вирази (regex) — це потужні інструменти, які використовуються для зіставлення та маніпулювання рядками на основі шаблонів. У Python модуль re забезпечує підтримку регулярних виразів, дозволяючи вам ефективно виконувати складні рядкові операції. Ця стаття познайомить вас з основами регулярних виразів і покаже, як їх ефективно використовувати в Python.

Початок роботи з модулем re

Щоб використовувати регулярні вирази в Python, вам потрібно імпортувати модуль re. Цей модуль надає кілька функцій для роботи з шаблонами регулярних виразів:

  • re.match() - перевіряє збіг лише на початку рядка.
  • re.search() - шукає відповідність у всьому рядку.
  • re.findall() - Знаходить усі збіги в рядку та повертає їх у вигляді списку.
  • re.sub() - Замінює збіги в рядку вказаною заміною.

Зіставлення основного шаблону

Регулярні вирази використовують спеціальні символи для визначення шаблонів пошуку. Ось кілька основних шаблонів:

  • . - Відповідає будь-якому одному символу, крім нового рядка.
  • \d - відповідає будь-якій цифрі (еквівалентно [0-9]).
  • \w – відповідає будь-якому буквено-цифровому символу (еквівалент [a-zA-Z0-9_]).
  • \s ​​- відповідає будь-якому пробілу.
  • ^ - відповідає початку рядка.
  • $ - відповідає кінцівці рядка.

Приклади

Нижче наведено кілька прикладів, що демонструють збіг базового шаблону:

import re

# Match a pattern at the beginning of a string
result = re.match(r'Hello', 'Hello, World!')
print(result.group())  # Output: Hello

# Search for a pattern in the entire string
result = re.search(r'\d+', 'There are 24 hours in a day.')
print(result.group())  # Output: 24

Використання регулярних виразів із групами

Групи використовуються для захоплення частин зіставленого тексту. Вони визначаються за допомогою дужок. Наприклад, щоб виділити певні частини візерунка, ви можете використовувати групи:

pattern = r'(\d{3})-(\d{2})-(\d{4})'
text = 'My number is 123-45-6789.'

# Find all matches with groups
match = re.search(pattern, text)
if match:
    print(f'Area Code: {match.group(1)}')  # Output: 123
    print(f'Prefix: {match.group(2)}')     # Output: 45
    print(f'Suffix: {match.group(3)}')     # Output: 6789

Використання спеціальних символів

Регулярні вирази містять кілька спеціальних символів для більш складного зіставлення шаблонів:

  • * – відповідає 0 або більше входжень попереднього елемента.
  • + – відповідає 1 або більше входженням попереднього елемента.
  • ? – відповідає 0 або 1 входженню попереднього елемента.
  • {n} – точно відповідає n входженням попереднього елемента.
  • | – відповідає шаблону до або після нього.

Приклади

Ось кілька прикладів використання спеціальних символів:

# Match a pattern with 0 or more occurrences
result = re.findall(r'\d*', '123 abc 456')
print(result)  # Output: ['123', '', '', '456']

# Match a pattern with 1 or more occurrences
result = re.findall(r'\d+', 'There are 24 apples and 3 oranges.')
print(result)  # Output: ['24', '3']

Заміна тексту регулярними виразами

Функція re.sub() використовується для заміни частин рядка, які відповідають шаблону:

text = 'The rain in Spain falls mainly in the plain.'

# Replace 'Spain' with 'France'
new_text = re.sub(r'Spain', 'France', text)
print(new_text)  # Output: The rain in France falls mainly in the plain.

Висновок

Регулярні вирази є потужним інструментом для зіставлення шаблонів і маніпулювання текстом у Python. За допомогою модуля re ви можете шукати, зіставляти та замінювати текст на основі складних шаблонів. Розуміючи базовий синтаксис і спеціальні символи, ви можете використовувати регулярні вирази для ефективного виконання широкого кола завдань обробки тексту.