Grunderna i regexp
Kompilera och matcha mönster
Grunderna i regexp är en gratis lektion i Go Academy på CoddyKit. Detta är lektion 1 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 Go Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Go Academy innehåller totalt 4 lektioner.
Vad är ett reguljärt uttryck?
Ett reguljärt uttryck (regexp) är ett mönster som beskriver en mängd strängar. Go tillhandahåller reguljära uttryck genom paketet regexp.
De passar utmärkt för att validera och söka i text.
package main
import (
"fmt"
"regexp"
)
func main() {
matched, _ := regexp.MatchString("go+", "gooo")
fmt.Println(matched)
}Snabb matchning med MatchString
regexp.MatchString(pattern, s) anger om mönstret förekommer någonstans i s. Den returnerar ett booleskt värde och ett fel.
package main
import (
"fmt"
"regexp"
)
func main() {
ok, _ := regexp.MatchString("cat", "the cat sat")
fmt.Println(ok)
}Kompilera ett mönster
För upprepad användning kompilerar ni mönstret en gång med regexp.Compile. Den returnerar en återanvändbar *regexp.Regexp och ett fel för ogiltiga mönster.
package main
import (
"fmt"
"regexp"
)
func main() {
re, err := regexp.Compile("[0-9]+")
fmt.Println(re.MatchString("abc123"), err)
}MustCompile för konstanter
regexp.MustCompile orsakar en panic om mönstret är ogiltigt. Använd den för fasta mönster som är kända vid kompileringen, vanligtvis variabler på paketnivå.
package main
import (
"fmt"
"regexp"
)
var digits = regexp.MustCompile("[0-9]+")
func main() {
fmt.Println(digits.MatchString("order 42"))
}Teckenklasser
Hakparenteser definierar en uppsättning tillåtna tecken. [aeiou] matchar valfri vokal; intervall som [a-z] matchar ett teckenintervall.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[a-z]+")
fmt.Println(re.MatchString("Hello"))
}Fördefinierade klasser
Förkortningar gör vanliga uppsättningar enkla: \d är en siffra, \w ett ordtecken och \s ett blanktecken. I Go-strängar måste ni escape:a bakstrecket.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("\\d+")
fmt.Println(re.MatchString("abc 99"))
}Kvantifierare
Kvantifierare anger hur många gånger:
*noll eller fler,+en eller fler,?noll eller en,{2,4}ett intervall.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("a{2,3}")
fmt.Println(re.MatchString("aaa"))
fmt.Println(re.MatchString("a"))
}Ankare
Ankare fixerar en matchning: ^ betyder början av texten och $ betyder slutet. Använd båda för att kräva att hela strängen matchar.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("^go$")
fmt.Println(re.MatchString("go"))
fmt.Println(re.MatchString("going"))
}Alternativ och grupper
Vertikalstrecket | betyder ELLER, och parenteser grupperar delar. (cat|dog)s? matchar cat, cats, dog eller dogs.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(cat|dog)s?")
fmt.Println(re.MatchString("dogs"))
}Validera ett format
Mönster med ankare kan användas för validering. Här kontrollerar vi en enkel kod med endast siffror, i ZIP-format och med exakt fem siffror.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("^\\d{5}$")
fmt.Println(re.MatchString("12345"))
fmt.Println(re.MatchString("123"))
}Matcha byte
Metoderna finns i former för både strängar och bytesegment. Match arbetar med en []byte på samma sätt som MatchString.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.Match([]byte("id7")))
}Snabb kontroll
Vilken funktion orsakar en panic för ett ogiltigt mönster och passar bäst för fasta mönster?
Sammanfattning: grunderna i regexp
Ni har lärt er grunderna:
- Matcha snabbt med
MatchString; kompilera medCompileellerMustCompile. - Bygg mönster av klasser, kvantifierare, ankare och grupper.
- Använd
^och$som ankare för validering av hela strängar.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("^[a-z]+@[a-z]+$")
fmt.Println(re.MatchString("hi@host"))
}Lär dig Go 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
- 51
- Lektioner
- 203
Vanliga frågor
Är lektionen ”Grunderna i regexp” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Go Academy, inklusive ”Grunderna i regexp”, 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 Go Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Grunderna i regexp”?
Kompilera och matcha mönster Ni övar på Go 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 Go Academy?
Du behöver inga förkunskaper. Utbildningen i Go 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 1 av 4.
Hur lång tid tar lektionen ”Grunderna i regexp”?
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 Go Academy-lektionen?
Ja. Varje Go 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
- Grunderna i regexp
- Hitta och extrahera
- Ersätta text
- Prestandatips