0Pricing
Ruby Academy · Урок

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

Продвинутые регулярные выражения

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

Зачем нужны именованные группы?

Пронумерованные захваченные группы, такие как m[1], становится трудно читать по мере усложнения шаблона. Именованные группы дают каждому захваченному значению понятную метку.

Синтаксис: (?<name>pattern).

m = /(?<year>\d{4})-(?<month>\d{2})/.match('2026-05')
puts(m[:year])
puts(m[:month])

Доступ к именованным захваченным данным

Получайте именованные захваченные данные с помощью ключа типа Symbol или String: m[:name]. Метод named_captures возвращает их все в виде хеша.

m = /(?<user>\w+)@(?<host>\w+)/.match('alice@mail')
p m.named_captures

Именованные группы с помощью =~

Когда литерал регулярного выражения с именованными группами находится слева от =~, Ruby автоматически создаёт локальные переменные для каждого имени.

if /(?<word>\w+)/ =~ 'hello'
  puts word
end

Якоря: начало и конец

Якоря сопоставляются с позициями, а не с символами:

  • ^ — начало строки
  • $ — конец строки

Они необходимы для проверки того, что всё входное значение соответствует шаблону.

puts(/^abc/.match?('abcdef'))
puts(/def$/.match?('abcdef'))
puts(/^abc$/.match?('abcdef'))

Якоря строки \A и \z

^ и $ обозначают границы строки, что важно для многострочных строк. Для всей строки предпочтительнее использовать \A (начало) и \z (самый конец).

text = "first\nsecond"
puts(/^second/.match?(text))
puts(/\Asecond/.match?(text))

Проверка всех входных данных

Чтобы проверить соответствие всей строки определённому формату, закрепите оба конца. Это отклоняет строки с лишними символами.

zip = /\A\d{5}\z/
puts(zip.match?('34000'))
puts(zip.match?('34000x'))

Границы слов

\b — это граница слова: позиция между символом слова и символом, не входящим в слово. Она позволяет находить целые слова, не поглощая символы.

puts('cat catalog'.scan(/\bcat\b/).length)
puts('cat catalog'.scan(/cat/).length)

Опережающая проверка

Положительная опережающая проверка (?=...) подтверждает, что следует дальше, не включая этот фрагмент в совпадение. Отрицательная опережающая проверка — (?!...).

puts('100 dollars'.match(/\d+(?= dollars)/)[0])
puts('apple pie'.match?(/apple(?! juice)/))

Проверка назад

Проверка назад (?<=...) подтверждает, что находится перед совпадением. Отрицательная проверка назад — (?<!...).

m = '$42'.match(/(?<=\$)\d+/)
puts(m[0])

Незахватывающие группы

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

m = /(?:Mr|Ms)\. (\w+)/.match('Ms. Lee')
p m.captures

Объединение всех возможностей

Практический проверяющий шаблон сочетает якоря, именованные группы и квантификаторы.

re = /\A(?<area>\d{3})-(?<num>\d{4})\z/
m = re.match('555-1234')
puts(m[:area])
puts(m[:num])

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

Какие якоря следует использовать, чтобы убедиться, что совпадает вся строка, без учёта переводов строк?

Итоги: именованные группы и якоря

Вы освоили продвинутые инструменты регулярных выражений:

  • Именованные группы (?<name>...) и named_captures
  • Якоря ^ $ \A \z \b
  • Опережающая проверка (?=) / (?!) и проверка назад (?<=) / (?<!)
  • Незахватывающие группы (?:...)
puts(/\A(?<id>\d+)\z/.match('42')[:id])

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

Урок «Именованные группы и якоря» бесплатный?

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

Чему я научусь в уроке «Именованные группы и якоря»?

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

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

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

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

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

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

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

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

  1. Литералы регулярных выражений
  2. Сопоставление и захват
  3. Подстановка
  4. Именованные группы и якоря
← Назад к Ruby Academy