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 サイトの他の関連記事を参照してください。