0Pricing
Go Academy · Lektion

Finden und Extrahieren

FindString und Submatches

Finden und Extrahieren ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Mehr als nur Abgleichen

Das Abgleichen zeigt, ob ein Muster vorhanden ist. Die Find-Familie zeigt, was übereinstimmt und wo, sodass Sie Daten extrahieren können.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.FindString("order 42 ready"))
}

FindString

FindString(s) gibt den ersten Treffer als Zeichenfolge zurück oder eine leere Zeichenfolge, wenn kein Treffer vorhanden ist.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[a-z]+")
    fmt.Printf("%q\n", re.FindString("123abc456"))
}

FindAllString

FindAllString(s, n) gibt jeden Treffer als Slice zurück. Übergeben Sie -1 für alle Treffer oder eine positive Begrenzung.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.FindAllString("a1 b22 c333", -1))
}

Ergebnisse begrenzen

Übergeben Sie ein positives n, um nach dieser Anzahl von Treffern aufzuhören.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.FindAllString("1 2 3 4", 2))
}

Den Index finden

FindStringIndex(s) gibt die Start- und Endposition des ersten Treffers in Bytes als zweielementiges Slice zurück.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("cat")
    fmt.Println(re.FindStringIndex("a cat here"))
}

Capture-Gruppen

Klammern erzeugen Capture-Gruppen. FindStringSubmatch gibt zuerst den gesamten Treffer und anschließend jede erfasste Gruppe zurück.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\d+)-(\\d+)")
    m := re.FindStringSubmatch("12-34")
    fmt.Println(m)
}

Submatch-Werte verwenden

Greifen Sie per Index auf das Submatch-Slice zu: Element 0 ist der vollständige Treffer, Element 1 die erste Gruppe und so weiter.

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])
}

Benannte Gruppen

Benennen Sie eine Gruppe mit (?P<name>...) und lesen Sie ihren Namen anschließend über SubexpNames zusammen mit dem Submatch-Slice aus.

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])
        }
    }
}

Alle Submatches

FindAllStringSubmatch(s, n) gibt ein Slice aus Submatch-Slices zurück, eines pro Treffer. Das eignet sich hervorragend zum Parsen vieler Datensätze.

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])
    }
}

Verhalten bei keinem Treffer

Wenn nichts übereinstimmt, geben die Find-Methoden eine leere Zeichenfolge oder ein nil-Slice zurück. Prüfen Sie dies vor dem Zugriff per Index, um eine Panic zu vermeiden.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    m := re.FindStringSubmatch("no digits")
    fmt.Println(m == nil)
}

Echte Daten extrahieren

Kombinieren Sie Gruppen, um strukturierte Felder aus einer Textzeile zu extrahieren.

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])
}

Kurze Überprüfung

Welches Element eines Submatch-Slices enthält den vollständigen Treffer?

Zusammenfassung: Finden und Extrahieren

Sie können nun Daten aus Texten extrahieren:

  • FindString und FindAllString geben Treffer zurück.
  • FindStringSubmatch gibt den vollständigen Treffer sowie Capture-Gruppen zurück.
  • Verwenden Sie benannte Gruppen und prüfen Sie auf nil, wenn kein Treffer vorhanden ist.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\w+)@(\\w+)")
    m := re.FindStringSubmatch("user@host")
    fmt.Println(m[1], "at", m[2])
}

Häufig gestellte Fragen

Ist die Lektion „Finden und Extrahieren“ kostenlos?

Ja — der vollständige Text von „Finden und Extrahieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Finden und Extrahieren“?

FindString und Submatches Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Finden und Extrahieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. regexp-Grundlagen
  2. Finden und Extrahieren
  3. Text ersetzen
  4. Performance-Tipps
← Zurück zu Go Academy