Go で複数の引用符で囲まれたグループをキャプチャする
この記事では、特定の形式 (大文字のコマンドの後にオプションが続く) に従う文字列を解析するという課題について説明します。引用された引数。目標は、コマンドと引数の両方を別々の文字列として抽出することです。
このタスクを処理するには、正規表現が使用されます: re1, _ := regexp.Compile(([A-Z] )(?: " (1 )")*)。最初のキャプチャ グループ ([A-Z] ) は大文字のコマンドに一致し、2 番目のキャプチャ グループ (?: "([^"] )")* は 0 個以上の引用符で囲まれた引数に一致します。
ただし、提供されたコードはこの問題を解決するには、より緩和された正規表現 re1, _ := regexp.Compile(([A-Z] )|(?: "(1 )")) この正規表現は、コマンドまたは引数を許可するために共用体 | を使用します。
コードを次のように変更します。
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])
}
すべての引数を正常にキャプチャできるようになりました。この改訂された正規表現はより汎用性が高く、コマンドと引数が異なる順序で出現する可能性がある入力形式のバリエーションに対応します。 免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3