Hitta och extrahera
FindString och delmatchningar
Hitta och extrahera är en gratis lektion i Go 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 Go Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Go Academy innehåller totalt 4 lektioner.
Mer än matchning
Matchning visar om ett mönster finns. Find-familjen visar vad som matchade och var, så att ni kan extrahera data.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindString("order 42 ready"))
}FindString
FindString(s) returnerar den första matchningen som en sträng, eller en tom sträng om det inte finns någon.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[a-z]+")
fmt.Printf("%q\n", re.FindString("123abc456"))
}FindAllString
FindAllString(s, n) returnerar alla matchningar som ett slice. Skicka -1 för alla matchningar eller en positiv gräns.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("a1 b22 c333", -1))
}Begränsa resultatet
Skicka ett positivt n för att sluta efter så många matchningar.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("1 2 3 4", 2))
}Hitta indexet
FindStringIndex(s) returnerar start- och slutpositionerna i byte för den första matchningen som ett slice med två element.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("cat")
fmt.Println(re.FindStringIndex("a cat here"))
}Fångstgrupper
Parenteser skapar fångstgrupper. FindStringSubmatch returnerar först hela matchningen och sedan varje fångad grupp.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+)-(\\d+)")
m := re.FindStringSubmatch("12-34")
fmt.Println(m)
}Använd submatch-värden
Indexera i submatch-slicet: element 0 är hela matchningen, element 1 är den första gruppen och så vidare.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+):(\\d+)")
m := re.FindStringSubmatch("09:30")
fmt.Println("hour", m[1], "min", m[2])
}Namngivna grupper
Ge en grupp ett namn med (?P<name>...) och läs sedan namnet via SubexpNames tillsammans med submatch-slicet.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(?P<area>\\d{3})-(?P<num>\\d{4})")
m := re.FindStringSubmatch("555-1234")
for i, name := range re.SubexpNames() {
if name != "" {
fmt.Println(name, m[i])
}
}
}Alla submatchningar
FindAllStringSubmatch(s, n) returnerar ett slice med submatch-slices, ett för varje matchning. Det passar utmärkt för att parsa många poster.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\w+)=(\\d+)")
all := re.FindAllStringSubmatch("x=1 y=2", -1)
for _, m := range all {
fmt.Println(m[1], m[2])
}
}Beteende när inget matchar
När inget matchar returnerar Find-metoderna en tom sträng eller ett nil-slice. Kontrollera detta innan ni indexerar för att undvika en panic.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
m := re.FindStringSubmatch("no digits")
fmt.Println(m == nil)
}Extrahera verkliga data
Kombinera grupper för att hämta strukturerade fält från en textrad.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d{4})-(\\d{2})-(\\d{2})")
m := re.FindStringSubmatch("date: 2026-05-30")
fmt.Println("year", m[1])
}Snabb kontroll
Vilket element i ett submatch-slice innehåller hela matchningen?
Sammanfattning: hitta och extrahera
Ni kan nu hämta data från text:
FindStringochFindAllStringreturnerar matchningar.FindStringSubmatchreturnerar hela matchningen samt fångstgrupper.- Använd namngivna grupper och kontrollera efter
nilnär inget matchar.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\w+)@(\\w+)")
m := re.FindStringSubmatch("user@host")
fmt.Println(m[1], "at", m[2])
}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 ”Hitta och extrahera” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Go Academy, inklusive ”Hitta och extrahera”, 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 ”Hitta och extrahera”?
FindString och delmatchningar 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 2 av 4.
Hur lång tid tar lektionen ”Hitta och extrahera”?
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