Heim >Backend-Entwicklung >Golang >Wie erfasst man mehrere Argumente in Go mithilfe regulärer Ausdrücke?

Wie erfasst man mehrere Argumente in Go mithilfe regulärer Ausdrücke?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 10:56:01393Durchsuche

How to Capture Multiple Arguments in Go Using Regular Expressions?

Erfassen mehrerer Gruppen in Go: Eine Fallstudie

Beim Parsen von Zeichenfolgen, die Wörter in Großbuchstaben gefolgt von optionalen Argumenten in doppelten Anführungszeichen enthalten, werden einzelne Gruppen isoliert kann eine Herausforderung sein. Ein gängiger Ansatz ist die Verwendung regulärer Ausdrücke, wie im folgenden Codeausschnitt dargestellt:

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

Wenn jedoch mehrere Argumente vorhanden sind, können Probleme auftreten, da nur das letzte Argument erfasst wird. Um dieses Problem zu lösen, ist ein flexiblerer regulärer Ausdruck erforderlich.

Erweiterter regulärer Ausdruck

Durch Lockerung der Gruppierungsbeschränkungen können wir sowohl Befehle als auch Argumente effektiv erfassen:

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

In dieser überarbeiteten Regex:

  • Die erste Gruppe ([A-Z]) entspricht Großbuchstaben (Befehlen).
  • Die zweite Gruppe (?: "( [^"] )") entspricht Argumenten in doppelten Anführungszeichen und ermöglicht so mehrere Vorkommen.

Extraktion und Anzeige

Sobald die Gruppen erfasst sind, können wir sie extrahieren und den Befehl und die Argumente separat anzeigen:

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

Dieser Ansatz ermöglicht ein effizientes Parsen von Zeichenfolgen mit wohldefinierten Befehlsstrukturen.

Das obige ist der detaillierte Inhalt vonWie erfasst man mehrere Argumente in Go mithilfe regulärer Ausdrücke?. 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