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 つの引数を正常にキャプチャし、それらを個別に出力します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3