0Pricing
Ruby Academy · Урок

Литералы регулярных выражений

Основы шаблонов

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

Что такое регулярное выражение?

Регулярное выражение — это шаблон для сопоставления с текстом. В Ruby регулярное выражение является полноценным объектом класса Regexp.

Регулярные выражения используют, чтобы искать, проверять и извлекать части строк.

  • Находить слово, цифру или символ
  • Проверять адреса электронной почты и номера телефонов
  • Извлекать фрагменты из неструктурированного текста
pattern = /hello/
puts pattern.class
puts(pattern.match?('hello world'))

Литералы регулярных выражений с косыми чертами

Самый распространённый способ записать регулярное выражение в Ruby — поместить его между двумя косыми чертами: /pattern/.

Это называется литералом регулярного выражения. Всё между косыми чертами является шаблоном.

ruby = /ruby/
puts ruby.class
puts(ruby.match?('I love ruby'))
puts(ruby.match?('I love python'))

Оператор сопоставления =~

Оператор =~ проверяет строку по регулярному выражению. Он возвращает индекс первого совпадения или nil, если совпадение не найдено.

puts('hello world' =~ /world/)
puts(('hello world' =~ /xyz/).inspect)

match? для логического ответа

Если нужен только ответ «да» или «нет», используйте match?. Он возвращает true или false и работает быстрее, поскольку не создаёт объект MatchData.

puts(/\d/.match?('abc123'))
puts(/\d/.match?('abcdef'))

Классы символов

Класс символов в квадратных скобках сопоставляется с любым одним символом из заданного набора.

  • [abc] сопоставляется с a, b или c
  • [a-z] сопоставляется с любой строчной буквой
  • [0-9] сопоставляется с любой цифрой
puts(/[aeiou]/.match?('sky'))
puts(/[aeiou]/.match?('tree'))
puts(/[0-9]/.match?('room 7'))

Сокращённые классы

Ruby предоставляет сокращённые обозначения для распространённых классов символов:

  • \d — цифра, \D — не цифра
  • \w — символ слова (буква, цифра или подчёркивание)
  • \s — пробельный символ, \S — непробельный символ
puts(/\d\d/.match?('age 42'))
puts(/\w+/.match?('hello_99'))
puts(/\s/.match?('no_space'))

Точка и квантификаторы

Точка . сопоставляется с любым одним символом, кроме перевода строки. Квантификаторы управляют повторением:

  • * — ноль или более раз
  • + — один или более раз
  • ? — ноль или один раз
  • {2,4} — от 2 до 4 раз
puts(/ab+c/.match?('abbbc'))
puts(/colou?r/.match?('color'))
puts(/\d{3}/.match?('id 451'))

Чередование с помощью вертикальной черты

Вертикальная черта | означает OR. Шаблон cat|dog сопоставляется с любым из этих слов.

Используйте круглые скобки, чтобы сгруппировать чередование внутри более крупного шаблона.

pet = /cat|dog/
puts(pet.match?('I have a dog'))
puts(pet.match?('I have a fish'))
puts(/^(yes|no)$/.match?('yes'))

Флаг без учёта регистра

Добавьте флаг i после закрывающей косой черты, чтобы выполнять сопоставление без учёта регистра.

Также полезны флаги m (точка сопоставляется с переводом строки) и x (расширенный режим, пробельные символы игнорируются).

puts(/ruby/i.match?('I love RUBY'))
puts(/ruby/.match?('I love RUBY'))

Создание регулярных выражений из строк

Регулярное выражение можно создать во время выполнения с помощью Regexp.new. Используйте Regexp.escape, чтобы безопасно включить пользовательские входные данные, которые могут содержать специальные символы.

word = 'price'
pattern = Regexp.new(word)
puts(pattern.match?('the price is high'))
puts(Regexp.escape('a.b*c'))

Обзор якорей

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

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

Позже вы изучите их подробнее.

puts(/^Hello/.match?('Hello there'))
puts(/world$/.match?('hello world'))

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

Что возвращает оператор =~, когда регулярное выражение совпадает со строкой?

Итоги: литералы регулярных выражений

Вы изучили основы регулярных выражений Ruby:

  • Литералы регулярных выражений записываются между /slashes/
  • =~ возвращает индекс, а match? — true/false
  • Классы символов [ ] и сокращённые обозначения \d \w \s
  • Квантификаторы * + ? {n,m} и чередование |
  • Флаг i отключает учёт регистра при сопоставлении

Далее вы научитесь извлекать совпавшие фрагменты.

puts(/\w+@\w+\.\w+/i.match?('USER@Mail.com'))

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

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

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

Чему я научусь в уроке «Литералы регулярных выражений»?

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

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

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

Сколько времени занимает урок «Литералы регулярных выражений»?

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

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

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

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

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