Регулярні вирази (regex) — це потужний інструмент для роботи з текстом, який дозволяє знаходити, замінювати та перевіряти рядки на відповідність певним шаблонам. У 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. Не бійтеся експериментувати з ними у своїх проектах!
© 2024 RailsInsights. All rights reserved.