Matchning och fångst
match och fångster.
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.capturesDestrukturera 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 hostText före och efter matchningen
MatchData har hjälpfunktioner för texten runt matchningen:
pre_matchdelen förepost_matchdelen 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 numsscan 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 pairsHantera 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'
endSpecialvariabler
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
endExtrahera 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:
matchreturnerar MatchData eller nil- Index 0 är hela matchningen och 1+ är grupper
capturesreturnerar alla grupper som en arrayscanhittar varje matchning i strängen- Kontrollera alltid om resultatet är
nil
p 'x1 y2 z3'.scan(/([a-z])(\d)/)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
- Reguljära uttrycksliteraler
- Matchning och fångst
- Substitution
- Namngivna grupper och ankare