💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • Регулярные выражения в Python от простого к сложному
  • Основы синтаксиса
  • Примеры регулярных выражений
  • Квантификаторы
  • Жадность и границы
  • Группы и перечисления
  • Перечисления (|)
  • Скобочные группы
  • Работа с регулярками в Python
  • Задачи и упражнения
  • Задачи на тренировку

Регулярные выражения в Python от простого к сложному

17.01.2025

PreviousЕщё более не смешные диалогиNextPython: Коллекции

Last updated 4 months ago

Регулярные выражения в Python от простого к сложному

Регулярные выражения (регулярки) — это мощный инструмент для поиска и обработки текста. В Python работа с регулярными выражениями реализована через модуль re.


Основы синтаксиса

Регулярное выражение — это строка, задающая шаблон поиска в тексте. Оно состоит из:

  • Обычных символов: соответствуют самим себе.

  • Специальных символов: например, \d — любая цифра, \w — буква или цифра.

Примеры:

  • \d{5} — пять подряд идущих цифр.

  • \w+ — одно или более букв/цифр.

Специальные символы требуют экранирования с помощью \ (например, \. для точки).


Примеры регулярных выражений

Регулярка
Описание

simple text

Строка "simple text"

\d{5}

Последовательность из 5 цифр

\b\w{3}\b

Слово из ровно 3 букв

[-+]?\d+

Целое число с опциональным знаком

\d{2}/\d{2}/\d{4}

Дата в формате ДД/ММ/ГГГГ


Квантификаторы

Квантификаторы задают количество повторений для символов или групп:

Шаблон
Описание

{n}

Ровно n повторений

{m,n}

От m до n повторений

?

Ноль или одно вхождение

*

Ноль или больше повторений

+

Одно или больше повторений

Пример:

  • a\d{2,4} — символ "a", за которым идут от 2 до 4 цифр.


Жадность и границы

Квантификаторы в регулярках обычно жадные, т.е. захватывают максимально возможное количество символов. Для изменения поведения можно использовать "ленивые" квантификаторы (с ?):

  • Жадный: .*

  • Ленивый: .*?

Пример:

import re
text = "(a + b) * (c + d)"
print(re.findall(r'\(.*\)', text))     # ['(a + b) * (c + d)']
print(re.findall(r'\(.*?\)', text))   # ['(a + b)', '(c + d)']

Группы и перечисления

Перечисления (|)

Для соответствия одному из нескольких шаблонов используется | (операция "ИЛИ"):

  • Пример: (яблоко|груша|банан) найдёт любое из слов "яблоко", "груша", "банан".

Скобочные группы

Группы позволяют:

  • Локализовать часть шаблона для применения квантификаторов.

  • Получать доступ к содержимому групп через match-объекты.

Пример группировки:

pattern = r'(\d{2})/(\d{2})/(\d{4})'
string = "Дата: 25/12/2025"
match = re.search(pattern, string)
if match:
    print("День:", match[1])  # 25
    print("Месяц:", match[2]) # 12
    print("Год:", match[3])   # 2025

Работа с регулярками в Python

Функции модуля re:

Функция
Описание

re.search

Ищет первое совпадение

re.fullmatch

Проверяет полное соответствие

re.findall

Возвращает список всех совпадений

re.finditer

Итератор по совпадениям

re.sub

Замена шаблона

Пример:

import re
text = "Сегодня 19.01.2025, а завтра 20.01.2025"
dates = re.findall(r'\d{2}\.\d{2}\.\d{4}', text)
print(dates)  # ['19.01.2025', '20.01.2025']

Задачи и упражнения

Задачи на тренировку

  1. Найти все натуральные числа в тексте.

  2. Найти слова, содержащие цифры.

  3. Преобразовать даты из формата ДД/ММ/ГГГГ в ГГГГ-ММ-ДД.

Пример задачи:

text = "Дата: 25/12/2025"
result = re.sub(r'(\d{2})/(\d{2})/(\d{4})', r'\3-\2-\1', text)
print(result)  # "Дата: 2025-12-25"

Полезные ссылки

— отладка и тестирование.

— подробное руководство.

Документация Python
Regex101
Regular Expressions Info