Go Academy · Lektion

Grunderna i regexp

Kompilera och matcha mönster

Lektion 1 av 413 steg

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 med Compile eller MustCompile.
  • 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"))
}
Gratis att börja

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

  1. Grunderna i regexp
  2. Hitta och extrahera
  3. Ersätta text
  4. Prestandatips
← Tillbaka till Go Academy