Ruby Academy · Lektion

Matchning och fångst

match och fångster.

Lektion 2 av 413 steg

Matchning och fångst är en gratis lektion i Ruby Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Ruby Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Ruby Academy innehåller totalt 4 lektioner.

MatchData-objekt

När ni anropar regex.match(string) returnerar Ruby ett MatchData-objekt vid lyckad matchning eller nil vid misslyckad matchning.

MatchData innehåller den matchade texten och eventuella fångade grupper.

m = /world/.match('hello world')
puts m.class
puts(m[0])

Hela matchningen: index 0

Index 0 i ett MatchData-objekt är alltid den hela matchade delsträngen, oavsett eventuella grupper.

m = /\d+/.match('order 4521 shipped')
puts(m[0])
puts(m.to_s)

Fångstgrupper

Parenteser ( ) skapar fångstgrupper. Varje grupp är åtkomlig via ett nummer som börjar på 1.

m = /(\d{4})-(\d{2})/.match('2026-05')
puts(m[1])
puts(m[2])

Metoden captures

captures returnerar en array med alla fångade grupper (exklusive hela matchningen på index 0).

m = /(\w+)@(\w+)/.match('alice@example')
p m.captures

Destrukturera fångster

Eftersom captures returnerar en array kan ni destrukturera resultatet direkt till variabler.

user, host = /(\w+)@(\w+)/.match('bob@server').captures
puts user
puts host

Text före och efter matchningen

MatchData har hjälpfunktioner för texten runt matchningen:

  • pre_match delen före
  • post_match delen efter
m = /\d+/.match('abc123xyz')
puts(m.pre_match)
puts(m.post_match)

scan för alla matchningar

String#scan returnerar en array med varje matchning i strängen, inte bara den första.

nums = '12 cats, 8 dogs, 3 birds'.scan(/\d+/)
p nums

scan med grupper

Om ert mönster innehåller grupper returnerar scan en array med arrayer, en per matchning, där varje array innehåller fångsterna för den matchningen.

pairs = 'a=1 b=2 c=3'.scan(/(\w)=(\d)/)
p pairs

Hantera nil säkert

Kom alltid ihåg att match returnerar nil när inget matchar. Kontrollera resultatet innan ni använder det.

m = /(\d+)/.match('no digits here')
if m
  puts m[1]
else
  puts 'no match found'
end

Specialvariabler

Efter en lyckad matchning anger Ruby globala variabler: $~ är MatchData och $1, $2 är de numrerade fångsterna.

Dessa är praktiska i korta skript, men explicita MatchData-objekt ger tydligare kod i verkliga program.

if 'name: Alice' =~ /name: (\w+)/
  puts $1
end

Extrahera ett datum

Kombinera grupper och fångster för att extrahera strukturerade data från en sträng i ett enda steg.

year, month, day = /(\d{4})-(\d{2})-(\d{2})/.match('2026-05-29').captures
puts "Year #{year}, Month #{month}, Day #{day}"

Snabbtest

Om ni utgår från 'a=1 b=2'.scan(/(\w)=(\d)/), hur ser resultatet ut?

Sammanfattning: matchning och fångst

Nu kan ni extrahera data från matchningar:

  • match returnerar MatchData eller nil
  • Index 0 är hela matchningen och 1+ är grupper
  • captures returnerar alla grupper som en array
  • scan hittar varje matchning i strängen
  • Kontrollera alltid om resultatet är nil
p 'x1 y2 z3'.scan(/([a-z])(\d)/)
Gratis att börja

Lär dig Ruby med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
29
Lektioner
109

Vanliga frågor

Är lektionen ”Matchning och fångst” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Ruby Academy, inklusive ”Matchning och fångst”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Matchning och fångst”?

match och fångster. Ni övar på Ruby Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Ruby Academy?

Du behöver inga förkunskaper. Utbildningen i Ruby Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Matchning och fångst”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Ruby Academy-lektionen?

Ja. Varje Ruby Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Reguljära uttrycksliteraler
  2. Matchning och fångst
  3. Substitution
  4. Namngivna grupper och ankare
← Tillbaka till Ruby Academy