I'm trying to create a function that can parse strings which consist of an uppercase word followed by zero or more arguments which are encapsulated in double quotes.
For example, each of the following lines:
COPY "filename one" "filename two"
REMOVE "filename"
LIST "x" "y" "z"
DISCONNECT
The result should be a string (the command) followed by a string[] (the arguments inside the quotes). I created the following regular expression:
re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`)
results := re1.FindAllStringSubmatch(input, -1)
However, no-matter what I try, only the last argument gets captured.
An example of my problem: https://play.golang.org/p/W1rE1X4SWf5
"arg1"
is not captured in this example. What am I missing?