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:
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!