Ruby Academy · leksjon

Regex-literaler

Grunnleggende mønstre

Leksjon 1 av 413 trinn

Regex-literaler er en gratis leksjon i Ruby Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Ruby Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Ruby Academy inneholder totalt 4 leksjoner.

Hva er et regulært uttrykk?

Et regulært uttrykk (regex) er et mønster som brukes til å finne treff i tekst. I Ruby er regex et førsteklasses objekt av klassen Regexp.

De bruker regex til å søke, validere og trekke ut deler av strenger.

  • Finne treff på et ord, et siffer eller et symbol
  • Validere e-postadresser og telefonnumre
  • Trekke ut deler fra ustrukturert tekst
pattern = /hello/
puts pattern.class
puts(pattern.match?('hello world'))

Regex-litteraler med skråstreker

Den vanligste måten å skrive et regex på i Ruby er mellom to skråstreker: /pattern/.

Dette kalles en regex-literal. Alt mellom skråstrekene er mønsteret.

ruby = /ruby/
puts ruby.class
puts(ruby.match?('I love ruby'))
puts(ruby.match?('I love python'))

Match-operatoren =~

Operatoren =~ tester en streng mot et regex. Den returnerer indeksen til det første treffet, eller nil hvis det ikke finnes noe treff.

puts('hello world' =~ /world/)
puts(('hello world' =~ /xyz/).inspect)

match? for et boolsk svar

Når De bare trenger et ja- eller nei-svar, bruker De match?. Den returnerer true eller false og er raskere fordi den ikke oppretter et MatchData-objekt.

puts(/\d/.match?('abc123'))
puts(/\d/.match?('abcdef'))

Tegnklasser

En tegnklasse i hakeparenteser finner treff på ett tegn fra et sett.

  • [abc] finner treff på a, b eller c
  • [a-z] finner treff på alle små bokstaver
  • [0-9] finner treff på alle sifre
puts(/[aeiou]/.match?('sky'))
puts(/[aeiou]/.match?('tree'))
puts(/[0-9]/.match?('room 7'))

Kortformer for tegnklasser

Ruby tilbyr korte escape-sekvenser for vanlige tegnklasser:

  • \d et siffer, \D et tegn som ikke er et siffer
  • \w et ordtegn (bokstaver, sifre og understrek)
  • \s et blanktegn, \S et tegn som ikke er et blanktegn
puts(/\d\d/.match?('age 42'))
puts(/\w+/.match?('hello_99'))
puts(/\s/.match?('no_space'))

Punktumet og kvantifikatorer

Punktumet . finner treff på ett hvilket som helst tegn (bortsett fra linjeskift). Kvantifikatorer styrer gjentakelser:

  • * null eller flere ganger
  • + én eller flere ganger
  • ? null eller én gang
  • {2,4} mellom 2 og 4 ganger
puts(/ab+c/.match?('abbbc'))
puts(/colou?r/.match?('color'))
puts(/\d{3}/.match?('id 451'))

Alternasjon med pipe

Pipe-tegnet | betyr ELLER. Mønsteret cat|dog finner treff på ett av ordene.

Bruk parenteser til å gruppere en alternasjon i et større mønster.

pet = /cat|dog/
puts(pet.match?('I have a dog'))
puts(pet.match?('I have a fish'))
puts(/^(yes|no)$/.match?('yes'))

Flagg som ignorerer store og små bokstaver

Legg til flagget i etter den avsluttende skråstreken for å gjøre treff uavhengige av store og små bokstaver.

Andre nyttige flagg er m (punktumet finner også linjeskift) og x (utvidet modus, ignorerer blanktegn).

puts(/ruby/i.match?('I love RUBY'))
puts(/ruby/.match?('I love RUBY'))

Bygge regulære uttrykk fra strenger

De kan bygge et regex under kjøring med Regexp.new. Bruk Regexp.escape til å inkludere brukerinndata som kan inneholde spesialtegn på en trygg måte.

word = 'price'
pattern = Regexp.new(word)
puts(pattern.match?('the price is high'))
puts(Regexp.escape('a.b*c'))

Introduksjon til ankere

Ankere finner treff på posisjoner, ikke tegn:

  • ^ starten av en linje
  • $ slutten av en linje
  • \A starten av strengen
  • \z slutten av strengen

De skal studeres grundig senere.

puts(/^Hello/.match?('Hello there'))
puts(/world$/.match?('hello world'))

Hurtigsjekk

Hva returnerer operatoren =~ når et regex finner treff i en streng?

Oppsummering: regex-litteraler

De har lært grunnlaget for regex i Ruby:

  • Regex-litteraler skrives mellom /slashes/
  • =~ returnerer en indeks, mens match? returnerer true/false
  • Tegnklasser [ ] og kortformer \d \w \s
  • Kvantifikatorer * + ? {n,m} og alternasjon |
  • Flagget i gjør treff uavhengige av store og små bokstaver

Deretter skal De fange de delene som fikk treff.

puts(/\w+@\w+\.\w+/i.match?('USER@Mail.com'))
Gratis å komme i gang

Lær deg Ruby med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
29
Leksjoner
109

Ofte stilte spørsmål

Er leksjonen «Regex-literaler» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Ruby Academy, inkludert «Regex-literaler», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Ruby Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Regex-literaler»?

Grunnleggende mønstre Du øver på Ruby Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Ruby Academy?

Ingen tidligere erfaring er nødvendig. Ruby Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Regex-literaler»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Ruby Academy-leksjonen?

Ja. Alle Ruby Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Regex-literaler
  2. Matching og fangst
  3. Substitusjon
  4. Navngitte grupper og ankere
← Tilbake til Ruby Academy