首頁 > 後端開發 > Golang > 如何使用 Go 的 Regexp 套件從字串中提取大括號內的所有字串?

如何使用 Go 的 Regexp 套件從字串中提取大括號內的所有字串?

Linda Hamilton
發布: 2025-01-04 04:21:40
原創
325 人瀏覽過

How Can I Extract All Strings Enclosed in Curly Braces from a String Using Go's Regexp Package?

在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和稍微修改的正規表示式模式,其中包括捕獲括號:

在此模式中, ([^{}]*) 是一個捕獲組,它匹配除大括號之外的任意數量的字元。使用 FindAllStringSubmatch 將為每個匹配傳回一個子匹配數組。然後,我們可以循環遍歷這些子匹配來取得括號內的值。

  • 正規表示式詳細資料
  • { - 文字左大括號
([^{}]*) - 捕捉符合零點零]個或多個字元(不包括大寫字元)的群組大括號} -字面右花括號

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板