GO での繰り返しグループのキャプチャ
大文字の単語の後に 0 個以上の double が続くなど、特定の形式に従う文字列を解析しようとする場合-引用符で囲まれた引数を使用するには、必要な要素を取得する正規表現を定義する必要があります。提供されたシナリオでは、正規表現
re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`)
を使用して繰り返し引数を取得しようとしましたが、すべての引数を正しく取得できませんでした。この問題を解決するために、改訂された正規表現が提案されています。
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]) }
この改訂されたアプローチでは、コマンドとその 3 つの引数が正常にキャプチャされ、それらが個別に出力されます。
以上がGo 正規表現で繰り返しグループをキャプチャする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。