„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erfasst man mehrere sich wiederholende Gruppen in regulären Ausdrücken in Go?

Wie erfasst man mehrere sich wiederholende Gruppen in regulären Ausdrücken in Go?

Veröffentlicht am 02.11.2024
Durchsuche:683

How to Capture Multiple Repeating Groups in Regular Expressions in Go?

Erfassen sich wiederholender Gruppen in Go

Bei der Arbeit mit Zeichenfolgen, die einem bestimmten Muster folgen, kann das Erfassen sich wiederholender Gruppen eine häufige Aufgabe sein. In Go sind reguläre Ausdrücke ein leistungsstarkes Werkzeug für diesen Zweck.

Stellen Sie sich das folgende Problem vor: Parsen von Zeichenfolgen, die aus einem Wort in Großbuchstaben bestehen, gefolgt von null oder mehr Argumenten in doppelten Anführungszeichen. Das Ziel besteht darin, sowohl den Befehl (Wort in Großbuchstaben) als auch die Argumente (Strings in Anführungszeichen) zu extrahieren.

Regex-Fallstricke

Ein häufiger Fehler ist die Verwendung eines regulären Ausdrucks wie:

re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)

Diese Regex erfasst nur das letzte Argument in der Zeichenfolge. Ändern Sie den Ausdruck, um die Erfassung mehrerer Gruppen von Argumenten zu ermöglichen:

re1, _ := regexp.Compile(`([A-Z] )|(?: "([^"] )")`)

Befehle und Argumente erfassen

Um nun sowohl den Befehl als auch die Argumente zu extrahieren, verwenden Sie die Funktion FindAllStringSubmatch mit einem entsprechend modifizierten regulären Ausdruck:

results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)

Diese Regex-Erfassungsgruppen sind:

  • Gruppe 1: Die Befehl (Wort in Großbuchstaben)
  • Gruppe 2: Jedes Argument (Zeichenfolge in doppelten Anführungszeichen)

Über Ergebnisse iterieren

Abschließend zum Iterieren über die Ergebnisse und trennen Sie den Befehl von den Argumenten:

fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
    fmt.Println("Arg:", arg[2])
}

Indem Sie die Mängel bei regulären Ausdrücken beheben, können Sie wiederkehrende Gruppen effektiv in Ihrem Go-Code erfassen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3