我正在嘗試返回一個數組或切片,其中包含針對字符串的特定正則表達式的所有匹配項。字符串是:{city}, {state} {zip}我想返回一個數組,其中包含大括號之間字符串的所有匹配項。我曾嘗試使用regexp包來完成此操作,但無法弄清楚如何返回我正在尋找的內容。這是我當前的代碼:r := regexp.MustCompile("/({[^}]*})/")
matches := r.FindAllString("{city}, {state} {zip}", -1)但是,無論我嘗試什么,它每次返回的都是一個空切片。
1 回答

大話西游666
TA貢獻1817條經驗 獲得超14個贊
首先,您不需要正則表達式分隔符。其次,使用原始字符串文字來定義正則表達式模式是一個好主意,您只需使用 1 個反斜杠來轉義正則表達式元字符。{第三,僅當您需要獲取不帶and的值時才需要捕獲組},因此,您可以將其刪除以獲取{city}, {state}and {zip}。
您可以使用FindAllString獲取所有匹配項:
r := regexp.MustCompile(`{[^{}]*}`)
matches := r.FindAllString("{city}, {state} {zip}", -1)
請參閱Go 演示。
要僅獲取花括號之間的部分,請使用FindAllStringSubmatch包含捕獲括號的模式,{([^{}]*)}:
r := regexp.MustCompile(`{([^{}]*)}`)
matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)
for _, v := range matches {
fmt.Println(v[1])
}
請參閱此 Go 演示。
正則表達式詳細信息
{
- 文字{
字符([^{}]*)
- 一個捕獲組,匹配除 and 之外的任何 0 個或多個(由于量詞)字符(是與*
除{
and之間指定的字符之外的任何字符匹配的否定字符類)}
[^...]
[^
]
}
- 文字}
字符
- 1 回答
- 0 關注
- 335 瀏覽
添加回答
舉報
0/150
提交
取消