Grunnleggende Regulære Uttrykk I Ruby med gsub

Regulære uttrykk (forkortet til regex) brukes til å operere på mønstre som finnes i strenger. De kan finne, erstatte eller fjerne visse deler av strenger avhengig av hva du forteller dem å gjøre. I Ruby er de alltid inneholdt i to fremre skråstreker.

for eksempel bruker du .gsub metode for strenger:

sentence = "This is a sample sentence."
sentence.gsub(/a/, "") #returns "This is smple sentence."

Den .gsub-metoden finner alle a-ene i strengen og fjerner dem, fordi den andre halvdelen av argumentet er tomt. Hvis vi skulle legge til noe mellom sitatene:

sentence.gsub(/This/, "*") #returns "* is a sample sentence."

den finner og erstatter alle forekomster av «Dette» med en stjerne (*). Det er også en måte å reversere denne funksjonaliteten på, og legge til en caret ( ^ ) på forsiden av det vanlige uttrykket vil gjøre det motsatte:

sentence.gsub(//, "*") #returns "********a**a**************"

Alt (inkludert mellomrom!) i strengen som IKKE er en a blir erstattet med stjerner. Legg merke til at for å kunne bruke denne funksjonaliteten er firkantede parenteser () nødvendige, uten dem vil gsub ikke gjøre noe.

det er mulig å passere tall eller brev områder i regex å spare deg selv fra å måtte skrive ut hver bokstav i alfabetet eller alle tallene 0 til 9.

sentence = "Th1s 1s a sampl3 s3nt3nc3."
sentence.gsub(//, "!") #these return the same thing
sentence.gsub(//, "!") # "Th!s !s a sampl! s!nt!nc!."

og for bokstavområder:

sentence.gsub(//, "🔥") 
#returns "🔥🔥1🔥 1🔥 🔥 🔥🔥🔥🔥🔥3 🔥3🔥🔥3🔥🔥3."

A-Z inneholder alle store bokstaver og a-z inneholder alle små bokstaver. Så denne gsub fjerner alle bokstaver og erstatter dem med brann emoji.

Snarveier

det er mange nyttige snarveier tilgjengelig for å forenkle det som blir sendt inn i regex. Her er noen av de mest nyttige jeg har funnet så langt:

  • \w for målretting mot alle bokstaver og tall:
lorem = "Lorem ipsum."
lorem.gsub(//, "wow") #returns "wowwowwowwowwow wowwowwowwowwow."

• \W å gjøre det motsatte (i eksemplet nedenfor erstatter det mellomrom og perioden på slutten med «wow»):

lorem.gsub(//, "wow") #returns "Loremwowipsumwow"
  • \d for målretting av alle heltall:
lorem = "L0r3m 1psum"
lorem.gsub(//, "-") #returns "L-r-m -psum."
  • \D for å gjøre det motsatte
lorem.gsub(//, "-") #returns "-0-3--1-----"

Det er mange flere snarveier og en stor ressurs for Dette jeg fant Er Rubular, den har en liste over dem og lar deg teste dem ut i nettleseren.

Blokker

Blokker kan brukes til å endre hvordan .gsub oppfører seg. Her er et eksempel for å utnytte hvert ord i en streng:

cool_phrase = "slow lorises are cool"
cool_phrase.gsub(/\w+/) {|word| word.capitalize}
#returns "Slow Lorises Are Cool"

Merk: «+ » – symbolet etter \w velger hvert ord som har 1 eller flere tegn. Uten » + » ville hele strengen være stor.

her er et annet eksempel der tallet i en streng økes:

year = "The year is 3100"
year.gsub(/\d+/) {|num| num.to_i + 1} #returns "The year is 3101"

Merk: igjen velger » + » – symbolet hvert tall som har 1 eller flere tall som helhet. Uten det ville avkastningen være «året er 4211» fordi det ville øke hvert nummer individuelt.

Brukstilfeller

Regulære uttrykk brukes ofte til å validere eller filtrere brukerinndata. Tenk deg at nettstedet ditt har et skjema som tar inn brukerens telefonnummer. Her er et eksempel på å fjerne symbolene for å bare få nummeret som et heltall:

phone_number = "(123)456-7890"
phone_number.gsub(/, ""/) #returns "1234567890"

Når du får brukerens navn, er det nyttig å bare få en streng med bokstaver og fjerne alt de legger inn som er et tall eller et symbol.

steve = "St97eve Brul()*)e "
steve.gsub(//, "").split(/(?=)/).join(" ")
#returns "Steve Brule"

eksemplet ovenfor ser litt komplekst ut, men alt det gjør er å fjerne alle symboler og tall, dele resultatet i en matrise basert på hvor store bokstaver er, og bli med dem i en streng.

Konklusjon Og Ressurser

Regulære uttrykk og .gsub er kraftige verktøy som kan forbedre programmet ditt, men å lese og prøve å finne ut av dem kan noen ganger føle at du leser hieroglyfer (se bildet nedenfor). Jeg anbefaler å ta deg tid til å lære dem og prøve å finne dem ut en om gangen. Gjør dette og snart vil du bli en regex master!

Hva!?

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.

Previous post Hvordan Å Høste Og Bruke Rose Hips
Next post De Fysiske Egenskapene Til Titan