0Pricing
Ruby Academy · Урок

Поиск и замена

gsub, sub, match

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

Поиск подстроки

Метод index возвращает позицию первого совпадения или nil, если совпадение не найдено. include? возвращает значение true или false.

text = "hello world"
puts text.index("world")
puts text.include?("world")

Замена первого совпадения с помощью sub

sub заменяет только первое вхождение шаблона новым значением.

text = "cat cat cat"
puts text.sub("cat", "dog")

Замена всех совпадений с помощью gsub

gsub означает глобальную замену. Он заменяет каждое вхождение.

text = "cat cat cat"
puts text.gsub("cat", "dog")

Использование регулярных выражений

Шаблоны между косыми чертами, например /.../, являются регулярными выражениями. /\d/ находит цифру. gsub и sub принимают шаблоны регулярных выражений.

text = "a1b2c3"
puts text.gsub(/\d/, "*")

Проверка совпадения с помощью match?

match? возвращает true, если регулярное выражение совпадает с фрагментом где-либо в строке. Этот метод удобен и быстр для проверок.

email = "ada@ruby.org"
puts email.match?(/@/)
puts "no at sign".match?(/@/)

Получение данных с помощью match

match возвращает объект MatchData. Индекс [0] содержит совпадение целиком; круглые скобки создают группы захвата, к которым обращаются через [1], [2] и так далее.

data = "2024-05-30"
m = data.match(/(\d+)-(\d+)-(\d+)/)
puts m[1]
puts m[2]

Поиск всех совпадений с помощью scan

scan возвращает массив всех совпадений в строке. Это особенно удобно для извлечения всех чисел или слов.

text = "phone 555 and 777"
puts text.scan(/\d+/).inspect

Якоря

Якоря привязывают совпадение к определённой позиции. ^ означает начало строки, а $ — конец. \A и \z привязывают совпадение к границам всей строки.

puts "hello".match?(/^hel/)
puts "hello".match?(/llo$/)
puts "hello".match?(/^world/)

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

Квадратные скобки задают набор допустимых символов. [aeiou] находит любую гласную. [a-z] находит любую строчную букву.

text = "Ruby"
puts text.gsub(/[aeiou]/i, "_")

Блоки в gsub

Передайте блоку gsub, чтобы динамически преобразовывать каждое совпадение. Текст совпадения передаётся в блок как аргумент.

text = "one two"
result = text.gsub(/\w+/) { |w| w.upcase }
puts result

Поиск без учёта регистра

Флаг i после регулярного выражения заставляет его игнорировать регистр букв.

text = "Hello HELLO hello"
puts text.gsub(/hello/i, "hi")

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

Проверьте свои навыки поиска и замены.

Итоги

Теперь Вы умеете искать и заменять текст:

  • index, include?, match? для поиска
  • sub (первого совпадения) и gsub (всех совпадений) для замены
  • шаблоны регулярных выражений, якоря и классы символов
  • scan для извлечения всех совпадений и блоки для динамической замены

Далее: разделение и объединение строк.

puts "a,b,c".gsub(",", " | ")

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

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

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

Чему я научусь в уроке «Поиск и замена»?

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

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

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

Сколько времени занимает урок «Поиск и замена»?

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

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

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

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

  1. Основы строк и методы
  2. Интерполяция и форматирование
  3. Поиск и замена
  4. Разделение и объединение
← Назад к Ruby Academy