Heim  >  Artikel  >  Backend-Entwicklung  >  So erfassen Sie mehrere Gruppen in Anführungszeichen in Go: Eine Regex-Lösung

So erfassen Sie mehrere Gruppen in Anführungszeichen in Go: Eine Regex-Lösung

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 00:53:28881Durchsuche

How to Capture Multiple Quoted Groups in Go: A Regex Solution

Erfassen mehrerer Gruppen in Anführungszeichen in Go

Dieser Artikel befasst sich mit der Herausforderung beim Parsen von Zeichenfolgen, die einem bestimmten Format folgen: ein Befehl in Großbuchstaben, gefolgt von optional zitierte Argumente. Das Ziel besteht darin, sowohl den Befehl als auch die Argumente als separate Zeichenfolgen zu extrahieren.

Um diese Aufgabe zu bewältigen, wird ein regulärer Ausdruck verwendet: re1, _ := regexp.Compile(([A-Z] )(?: " (1 )")*). Die erste einfangende Gruppe ([A-Z] ) stimmt mit dem Großbuchstabenbefehl überein, während die zweite einfangende Gruppe (?: „([^“] )“)* mit null oder mehr Argumenten in Anführungszeichen übereinstimmt.

Allerdings der bereitgestellte Code erfasst nur das letzte Argument. Um dieses Problem zu lösen, wird ein entspannterer regulärer Ausdruck vorgeschlagen: re1, _ := regexp.Compile(([A-Z] )|(?: "(1 )")). Dieser reguläre Ausdruck verwendet eine Union |, um entweder einen Befehl oder ein Argument zuzulassen.

Durch Ändern des Codes wie folgt:

<code class="go">re1, _ := regexp.Compile(`([A-Z]+)|(?: "([^"]+)")`)
results := re1.FindAllStringSubmatch(`COMMAND "arg1" "arg2" "arg3"`, -1)

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

Alle Argumente können jetzt erfolgreich erfasst werden. Dieser überarbeitete reguläre Ausdruck ist vielseitiger und berücksichtigt Variationen im Eingabeformat, bei denen Befehle und Argumente in unterschiedlicher Reihenfolge auftreten können.


  1. "

Das obige ist der detaillierte Inhalt vonSo erfassen Sie mehrere Gruppen in Anführungszeichen in Go: Eine Regex-Lösung. 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