首頁 >後端開發 >Golang >如何使用 Go 的 regexp 套件提取大括號內的字串匹配?

如何使用 Go 的 regexp 套件提取大括號內的字串匹配?

Susan Sarandon
Susan Sarandon原創
2024-12-18 16:29:10283瀏覽

How to Extract String Matches Enclosed in Curly Braces Using Go's `regexp` Package?

在Go 中使用正則表達式檢索字串匹配

在Go 中,regexp 包提供了根據正則在字符串中搜索匹配項的功能表達式。本指南說明如何從給定字串中提取匹配數組,這些字串包含用大括號括起來的特定段。

問題:

您有一個包含以下內容的字串模式:

{city}, {state} {zip}

您的目標是獲得一個包含大括號之間出現的所有子字串的陣列。儘管使用了 regexp 包,但您在實現所需的輸出時遇到了困難。

解決方案:

要解決此問題,請考慮以下步驟:

  1. 消除正規表示式分隔符號: 刪除包裹正規表示式的正斜線表達式。
  2. 使用原始字串文字: 使用原始字串文字定義正規表示式,用反引號`` 表示,它允許您使用單一反斜線轉義正則表達式元字符。
  3. 刪除捕獲組:對於本例,捕獲組{([^{}]*)} 是不必要的,因為您只需要大括號之間的字串。因此,您可以使用簡化模式 {[^}]*}。

要擷取所有符合項,請使用 FindAllString:

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

僅擷取捲曲之間的部分大括號,使用 FindAllStringSubmatch以及包含捕捉括號的模式:

r := regexp.MustCompile(`{([^{}]*)}`)
matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)
for _, v := range matches {
    fmt.Println(v[1])
}

Regex細分:

  • { - 匹配文字左大括號。
  • {[^{}]*} - 捕捉大括號以外的所有字元並將它們儲存在group.
  • ([^{}]*) - 與上方類似,但捕獲的部分分配給組1.
  • } - 匹配文字右大括號。

以上是如何使用 Go 的 regexp 套件提取大括號內的字串匹配?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn