Rails Insights

Регулярні вирази в Ruby

Регулярні вирази (regex) — це потужний інструмент для роботи з текстом, який дозволяє знаходити, замінювати та перевіряти рядки на відповідність певним шаблонам. У Ruby регулярні вирази є невід'ємною частиною мови, і їх використання може значно спростити обробку тексту. У цій статті ми розглянемо основи регулярних виразів у Ruby, їх синтаксис, а також кілька практичних прикладів.

Що таке регулярні вирази?

Регулярні вирази — це спеціальні рядки, які описують шаблони для пошуку тексту. Вони використовуються для:

  • Перевірки формату даних (наприклад, електронна пошта, телефонні номери)
  • Заміни частин тексту
  • Витягування інформації з рядків
  • Розділення рядків на частини

Регулярні вирази можуть здаватися складними на перший погляд, але з практикою ви зможете легко їх освоїти.

Основи синтаксису регулярних виразів у Ruby

У Ruby регулярні вирази створюються за допомогою об'єкта класу Regexp. Ви можете створити регулярний вираз, обгорнувши шаблон у косі дужки /.../ або використовуючи метод Regexp.new.

Приклади створення регулярних виразів

Ось кілька прикладів створення регулярних виразів:

# Використання косих дужок
regex1 = /abc/

# Використання Regexp.new
regex2 = Regexp.new("abc")

Обидва способи створюють однаковий регулярний вираз, який шукає рядок "abc".

Основні метасимволи

Регулярні вирази використовують метасимволи для опису шаблонів. Ось деякі з найпоширеніших метасимволів:

  • . — відповідає будь-якому символу, окрім нового рядка
  • * — відповідає нульовій або більше кількості попереднього символу
  • + — відповідає одній або більше кількості попереднього символу
  • ? — відповідає нульовій або одній кількості попереднього символу
  • ^ — вказує на початок рядка
  • $ — вказує на кінець рядка
  • [abc] — відповідає будь-якому з символів у дужках
  • [^abc] — відповідає будь-якому символу, окрім тих, що вказані в дужках
  • (...) — групує частини регулярного виразу

Методи для роботи з регулярними виразами

Ruby надає кілька методів для роботи з регулярними виразами. Ось деякі з них:

  • =~ — перевіряє, чи відповідає рядок регулярному виразу
  • match — повертає об'єкт MatchData, якщо є відповідність
  • scan — знаходить всі відповідності в рядку
  • sub — замінює першу відповідність регулярному виразу
  • gsub — замінює всі відповідності регулярному виразу

Приклади використання методів

Розглянемо кілька прикладів використання цих методів:

text = "Hello, my email is example@example.com"

# Використання =~
if text =~ /example/
  puts "Знайдено 'example'!"
end

# Використання match
match_data = text.match(/email/)
puts match_data[0] if match_data

# Використання scan
emails = text.scan(/\w+@\w+\.\w+/)
puts "Знайдені електронні адреси: #{emails.join(', ')}"

# Використання sub
new_text = text.sub(/example/, 'test')
puts new_text

# Використання gsub
new_text_all = text.gsub(/example/, 'test')
puts new_text_all

Використання регулярних виразів для валідації даних

Регулярні вирази часто використовуються для валідації даних, таких як електронні адреси, телефонні номери тощо. Ось приклад валідації електронної адреси:

def valid_email?(email)
  regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  !!(email =~ regex)
end

puts valid_email?("test@example.com") # true
puts valid_email?("invalid-email")     # false

У цьому прикладі ми використовуємо регулярний вираз для перевірки, чи є рядок дійсною електронною адресою.

Розширені можливості регулярних виразів

Регулярні вирази в Ruby також підтримують розширені можливості, такі як:

  • Ігнорування регістру: додавання i в кінці регулярного виразу
  • Використання ?: для не зберігаючих груп
  • Використання (?=...) для позитивних поглядів
  • Використання (?!...) для негативних поглядів

Приклад розширених можливостей

text = "Hello, my email is Example@Example.com"

# Ігнорування регістру
if text =~ /example/i
  puts "Знайдено 'example' (ігноруючи регістр)!"
end

# Використання позитивного погляду
if text =~ /(?=example)/
  puts "Текст містить 'example'!"
end

Висновок

Регулярні вирази в Ruby — це потужний інструмент для роботи з текстом, який може значно спростити обробку даних. Хоча на перший погляд вони можуть здаватися складними, з практикою ви зможете легко їх освоїти. Використовуйте регулярні вирази для валідації даних, пошуку та заміни тексту, а також для витягування інформації з рядків.

Сподіваємося, що ця стаття допомогла вам зрозуміти основи регулярних виразів у Ruby. Не бійтеся експериментувати з ними у своїх проектах!

Published: August 13, 2024

© 2024 RailsInsights. All rights reserved.