Heim >Backend-Entwicklung >Golang >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?

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 06:29:02938Durchsuche

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:

<code class="go">re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`)</code>

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

<code class="go">re1, _ := regexp.Compile(`([A-Z]+)|(?: "([^"]+)")`)</code>

Befehle und Argumente erfassen

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

<code class="go">results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)</code>

Diese Regex-Erfassungsgruppen sind:

  • Gruppe 1: Der Befehl (Großbuchstabenwort)
  • Gruppe 2:Jedes Argument (Zeichenfolge in doppelten Anführungszeichen)

Ergebnisse iterieren

Zuletzt, um die Ergebnisse zu iterieren und den Befehl von den Argumenten zu trennen:

<code class="go">fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
    fmt.Println("Arg:", arg[2])
}</code>

Indem Sie die Mängel des regulären Ausdrucks beheben, können Sie wiederkehrende Gruppen effektiv in Ihrem Go-Code erfassen.

Das obige ist der detaillierte Inhalt vonWie erfasst man mehrere sich wiederholende Gruppen in regulären Ausdrücken in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn