Go で複数の引用符で囲まれたグループをキャプチャする
この記事では、特定の形式 (大文字のコマンドの後にオプションが続く) に従う文字列を解析するという課題について説明します。引用された引数。目標は、コマンドと引数の両方を別々の文字列として抽出することです。
このタスクを処理するには、正規表現が使用されます: re1, _ := regexp.Compile(([A-Z] )(?: " (1 )")*)。最初のキャプチャ グループ ([A-Z] ) は大文字のコマンドに一致し、2 番目のキャプチャ グループ (?: "([^"] )")* は 0 個以上の引用符で囲まれた引数に一致します。
ただし、提供されたコードはこの問題を解決するには、より緩和された正規表現が提案されています: re1, _ := regexp.Compile(([A-Z] )|(?: "(1 )"))。この正規表現は共用体 | を使用して、コマンドまたは引数のいずれかを許可します。
コードを次のように変更することで、<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>
以上がGo で複数の引用符で囲まれたグループをキャプチャする方法: 正規表現ソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。