簡體   English   中英

使用 Regex golang 查找所有字符串匹配

[英]Find all string matches with Regex golang

我正在嘗試返回一個數組或切片,其中包含針對字符串的特定正則表達式的所有匹配項。 字符串是:

{city}, {state} {zip}

我想返回一個數組,其中包含花括號之間的所有字符串匹配項。 我曾嘗試使用regexp包來完成此操作,但無法弄清楚如何返回我正在尋找的內容。 這是我當前的代碼:

r := regexp.MustCompile("/({[^}]*})/")
matches := r.FindAllString("{city}, {state} {zip}", -1)

但是,無論我嘗試什么,它每次返回的都是一個空切片。

首先,您不需要正則表達式分隔符。 其次,使用原始字符串文字來定義正則表達式模式是一個好主意,您只需要使用 1 個反斜杠來轉義正則表達式元字符。 第三,僅當您需要獲取沒有{}的值時才需要捕獲組,因此,您可以將其刪除以獲取{city}{state}{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 演示

正則表達式詳情

  • { - 文字{字符
  • ([^{}]*) - 匹配除{}之外的任何 0 個或多個(由於*量詞)字符的捕獲組( [^...]是匹配任何字符的否定字符類,但一個( s) 在[^]之間指定)
  • } - 文字}字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM