10.1. Синтаксис регулярных выражений.

Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

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

Регулярные выражения (Regular Expressions) в Python представляют собой универсальный инструмент для работы с текстовыми данными. Они позволяют осуществлять поиск, извлечение и замену текста на основе шаблонов. Вот основные концепции и синтаксис регулярных выражений в Python:
 
Специальные символы
 
Символы в " " Значение 
 . Любой символ, кроме символа новой строки (\n).
 ^ Начало строки.
 $ Конец строки.
 * Ноль или более повторений предыдущего символа.
 + Одно или более повторений предыдущего символа.
 ? Ноль или одно повторение предыдущего символа.
 {n} Ровно n повторений предыдущего символа.
 {n,} Не менее n повторений предыдущего символа.
 {n,m} От n до m повторений предыдущего символа.
 \ Экранирование специальных символов.
 [] Набор символов.
 | Или.
 
Специальные последовательности
 
Обозначение в ' ' Значение
 \d Цифра (0-9).
 \D Не цифра.
 \w Буквенно-цифровой символ (a-z, A-Z, 0-9, _).
 \W Не буквенно-цифровой символ.
 \s Пробельный символ (пробел, табуляция, новая строка).
 \S Не пробельный символ.
 
Группировка, обратные ссылки и модификаторы
 
Обозначение Значение символов
 '()' Группировка символов.
 `\1`, `\2`, ... Обратные ссылки на группы.
 `re.IGNORECASE` или `re.I` Игнорировать регистр при сопоставлении.
 `re.MULTILINE` или `re.M` Разрешить "^" и "$" сопоставлять начало и конец каждой строки.
 
Методы модуля `re`
 
Метод Значение метода
 re.compile(pattern) Компилирует регулярное выражение в объект `Pattern`.
 re.search(pattern, string) Ищет первое сопоставление регулярного выражения в строке.
 re.match(pattern, string) Ищет сопоставление регулярного выражения в начале строки.
 re.findall(pattern, string) Находит все сопоставления регулярного выражения в строке и возвращает их в виде списка.
 re.finditer(pattern, string) Находит все сопоставления регулярного выражения в строке и возвращает их в виде итератора объектов `Match`.
 re.sub(pattern, repl, string) Заменяет все сопоставления регулярного выражения в строке на указанную подстановку. 
import re

# Поиск всех цифр в строке
pattern = r'\d+'
text = 'There are 123 apples and 456 oranges'
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['123', '456']

# Замена всех цифр на 'X'
new_text = re.sub(pattern, 'X', text)
print(new_text)  # Вывод: 'There are X apples and X oranges'

# Поиск всех слов, начинающихся с буквы 'a' или 'b'
pattern = r'\b[a-b]\w+'
text = 'apple banana carrot dog elephant'
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['apple', 'banana']
Регулярные выражения могут быть очень мощным инструментом для работы с текстом, но их следует использовать с осторожностью, так как сложные шаблоны могут быть трудными для понимания и поддержки.
Вот примеры использования и описание основных методов модуля `re` для работы с регулярными выражениями:

 

1. re.compile(pattern, flags=0):
Компилирует регулярное выражение в объект `Pattern`.
import re
pattern = re.compile(r'\d+') # Компилируем регулярное выражение для поиска чисел
 
2. re.search(pattern, string, flags=0):
Ищет первое сопоставление регулярного выражения в строке.
import re

text = 'There are 123 apples and 456 oranges'
match = re.search(r'\d+', text)  # Ищем первое число в строке
if match:
    print(match.group())  # Вывод: 123
 
3. re.match(pattern, string, flags=0):
Ищет сопоставление регулярного выражения в начале строки.
import re

text = '123 apples and 456 oranges'
match = re.match(r'\d+', text)  # Ищем число в начале строки
if match:
   print(match.group())  # Вывод: 123
 
4. re.findall(pattern, string, flags=0):
Находит все сопоставления регулярного выражения в строке и возвращает их в виде списка.
import re

text = 'There are 123 apples and 456 oranges'
matches = re.findall(r'\d+', text)  # Находим все числа в строке
print(matches)  # Вывод: ['123', '456']
 
5. re.finditer(pattern, string, flags=0):
Находит все сопоставления регулярного выражения в строке и возвращает их в виде итератора объектов `Match`.
import re

text = 'There are 123 apples and 456 oranges'
matches = re.finditer(r'\d+', text)  # Находим все числа в строке
for match in matches:
   print(match.group())  # Вывод: 123, затем 456
 
6. re.sub(pattern, repl, string, count=0, flags=0):
Заменяет все сопоставления регулярного выражения в строке на указанную подстановку.
import re

text = 'There are 123 apples and 456 oranges'
new_text = re.sub(r'\d+', 'X', text)  # Заменяем все числа на 'X'
print(new_text)  # Вывод: 'There are X apples and X oranges'

категории

ТЕОРИЯ

  • Введение в Python
  • Основы программирования на Python
  • Управляющие конструкции
  • Структуры данных
  • Функции и модули
  • Обработка исключений
  • Работа с файлами и потоками
  • файловая система
  • Объектно-ориентированное программирование (ООП)
  • Регулярные выражения
  • Дополнительные темы

Мы в соцсетях