Ruby:
Säännöllisten lausekkeiden käyttö
Kuinka:
Perusvastaavuus
Merkkijonon vastaavuuden tarkistamiseen yksinkertaisen mallin kanssa voi käyttää match
-metodia. Alla tarkistamme, löytyykö sana “Ruby” annetusta merkkijonosta.
if /Ruby/.match("Hei, Ruby!")
puts "Vastaavuus löytyi!"
end
# Tuloste: Vastaavuus löytyi!
Mallivastaavuus muuttujien kanssa
Voit sisällyttää muuttujia regexiisi käyttämällä #{}
-syntaksia, tehdessäsi malleistasi dynaamisia.
kieli = "Ruby"
if /#{kieli}/.match("Ohjelmointi Rubylla on hauskaa.")
puts "Puhutaan Rubysta!"
end
# Tuloste: Puhutaan Rubysta!
Regexin käyttö korvaamiseen
gsub
-metodi mahdollistaa jokaisen mallia vastaavan esiintymän korvaamisen määritellyllä korvaavalla merkkijonolla.
puts "foobarfoo".gsub(/foo/, "bar")
# Tuloste: barbarbar
Kaappaaminen
Sulkeita regexissa käytetään osien kaappaamiseen vastaavuudesta. match
-metodi palauttaa MatchData
-objektin, jota voit käyttää kaappausten saavuttamiseen.
match_data = /(\w+): (\d+)/.match("Ikä: 30")
puts match_data[1] # Kaapattu otsikko
puts match_data[2] # Kaapattu arvo
# Tuloste:
# Ikä
# 30
Kolmannen osapuolen kirjastojen käyttö
Vaikka Rubyn vakio kirjasto onkin tehokas, saatat joskus tarvita erikoistuneempaa toiminnallisuutta. Yksi suosittu gem regexin kanssa työskentelyyn on Oniguruma
, joka tarjoaa lisäominaisuuksia Rubyn sisäänrakennettuun regex-moottoriin nähden.
Asenna se käyttäen:
gem install oniguruma
Esimerkki käytöstä voisi näyttää tältä (olettaen, että olet vaatinut oniguruman
asentamisen jälkeen):
# Tämä on kehittyneempi esimerkki ja saattaa vaatia lisäasetuksia
require 'oniguruma'
malli = Oniguruma::ORegexp.new('(\d+)')
match_data = malli.match("Numero on 42.")
puts match_data[1]
# Tuloste: 42
Muista, vaikka säännölliset lausekkeet ovat voimakkaita, ne voivat muuttua monimutkaisiksi ja vaikeasti hallittaviksi monimutkaisemmissa malleissa. Tavoittele luettavuutta ja harkitse vaihtoehtoisia menetelmiä, jos regexisi muuttuu liian monimutkaiseksi.