在Go 中捕獲多個群組:案例研究
解析包含大寫單字後跟可選雙引號參數的字串時,隔離各個組可能具有挑戰性。一種常見的方法涉及使用正規表示式,如以下程式碼片段所示:
<code class="go">re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`) results := re1.FindAllStringSubmatch(input, -1)</code>
但是,當存在多個參數時可能會出現問題,因為僅捕獲最後一個參數。為了解決這個問題,需要一個更靈活的正規表示式。
增強正規表示式
透過放寬分組約束,我們可以有效地捕捉指令與參數:
re1, _ := regexp.Compile(`([A-Z]+)|(?: "([^"]+)")`)
在此修訂後的正規表示式中:
擷取與顯示
捕獲組後,我們可以提取並分別顯示命令和參數:
fmt.Println("Command:", results[0][1]) for _, arg := range results[1:] { fmt.Println("Arg:", arg[2]) }
這種方法可以有效地解析具有明確定義的命令結構的字串。
以上是如何使用正規表示式捕捉 Go 中的多個參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!