0Pricing
Python Academy · Урок

Группы и именованные захваты

Извлекайте данные с помощью групп захвата и синтаксиса именованных групп.

«Группы и именованные захваты» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Введение

Группы захвата извлекают определённые части совпадения. Именованные группы делают извлечённые данные понятными без дополнительных пояснений.

Базовая группа захвата

Круглые скобки () создают группу захвата. m.group(1) возвращает совпадение первой группы.
import re
m = re.search(r'(\d{4})-(\d{2})-(\d{2})', '2024-01-15')
if m: print(m.group(1), m.group(2), m.group(3))

m.groups()

m.groups() возвращает все группы захвата в виде кортежа.
import re
m = re.search(r'(\w+)@(\w+)\.(\w+)', 'user@example.com')
if m: print(m.groups())

Именованные группы

(?Ppattern) создаёт именованную группу. Получить к ней доступ можно с помощью m.group('name') или m.groupdict().
import re
m = re.search(
    r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})',
    '2024-01-15'
)
if m: print(m.groupdict())

Группы без захвата

(?:pattern) объединяет элементы без захвата. Это полезно, когда группировка нужна для квантификаторов, но само совпадение получать не требуется.
import re
print(re.findall(r'(?:cat|dog)s?', 'cats dogs cat dog'))

Обратные ссылки

\1 внутри шаблона ссылается на совпадение группы 1. Это полезно для поиска повторяющихся слов.
import re
# Match repeated words
m = re.search(r'\b(\w+)\s+\1\b', 'the the quick brown', re.IGNORECASE)
if m: print('repeated:', m.group())

findall с группами

Если шаблон содержит группы, findall возвращает список кортежей групп, а не полных совпадений.
import re
result = re.findall(r'(\w+)=(\w+)', 'x=1 y=2 z=3')
print(result)

Использование групп в re.sub()

В re.sub() выражение \1 или \g вставляет захваченные группы в строку замены.
import re
result = re.sub(r'(\w+)\s(\w+)', r'\2 \1', 'John Smith')
print(result)

Просмотр вперёд (?= )

(?=expr) — положительный просмотр вперёд: он соответствует позиции, после которой следует expr, не потребляя этот фрагмент.
import re
# Prices followed by USD
print(re.findall(r'\d+(?= USD)', '100 USD 200 EUR 300 USD'))

Просмотр назад (?<= )

(?<=expr) — положительный просмотр назад: он соответствует позиции, перед которой находится expr, не потребляя этот фрагмент.
import re
print(re.findall(r'(?<=\$)\d+', 'paid $100 and $200'))

Именованная обратная ссылка

(?P=name) в шаблоне ссылается на значение именованной группы. Это полезно для поиска закрывающих тегов.
import re
m = re.search(r'<(?P<tag>\w+)>.*?</(?P=tag)>', '<b>hello</b>')
if m: print(m.group())

Быстрая проверка

Как получить именованную группу захвата с именем 'year' из объекта совпадения m?

Итоги

Группы () захватывают части совпадения. m.group(1), m.groups(), m.groupdict(). Именованная группа: (?P). Без захвата: (?:). Обратные ссылки: \1 или \g в заменах.

Продолжайте

Отличная работа! Следующий урок уже ждёт Вас.

Часто задаваемые вопросы

Урок «Группы и именованные захваты» бесплатный?

Да — полный текст урока «Группы и именованные захваты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Группы и именованные захваты»?

Извлекайте данные с помощью групп захвата и синтаксиса именованных групп. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Группы и именованные захваты»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы регулярных выражений
  2. Использование re.match, re.search, re.findall
  3. Группы и именованные захваты
  4. re.sub, флаги и скомпилированные шаблоны
← Назад к Python Academy