在Go 中使用正規表示式來找出字串符合
本文探討了檢索給定正則表達式與指定字串的所有匹配的任務。我們將檢查範例字串並使用 Go 的 regexp 套件實作一個解決方案,以捕獲大括號內的字串。
問題陳述
給定一個字串:
{city}, {state} {zip}
我們的目標是傳回一個陣列或切片,其中包含 curly之間字串的所有符合項目
解
為了實現這一點,我們可以利用正規表示式來定義所需的模式。但是,與最初的嘗試相比,需要進行一些關鍵修改。
首先,我們刪除正規表示式分隔符號(“/”),因為它們在 Go 中是不必要的。其次,我們使用原始字串文字(用反引號`表示)來定義正規表示式模式。這允許我們使用單一反斜線 () 來轉義正規表示式元字元。最後,由於我們不需要捕獲各個值,因此我們可以簡化正規表示式模式以匹配大括號之間的字串,而無需捕獲括號。
這是程式碼的更新版本:
r := regexp.MustCompile(`{[^{}]*}`) matches := r.FindAllString("{city}, {state} {zip}", -1)
此程式碼將傳回包含以下符合項目的陣列:
["{city}", "{state}", "{zip}"]
潛水層次
潛水層次r := regexp.MustCompile(`{([^{}]*)}`) matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)
在此模式中, ([^{}]*) 是一個捕獲組,它匹配除大括號之外的任意數量的字元。使用 FindAllStringSubmatch 將為每個匹配傳回一個子匹配數組。然後,我們可以循環遍歷這些子匹配來取得括號內的值。
以上是如何使用 Go 的 Regexp 套件從字串中提取大括號內的所有字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!