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

我正在尝试返回一个数组或切片,其中包含针对字符串的特定正则表达式的所有匹配项。字符串是:

{city}, {state} {zip}

我想返回一个数组,其中包含大括号之间字符串的所有匹配项。我曾尝试使用regexp包来完成此操作,但无法弄清楚如何返回我正在寻找的内容。这是我当前的代码:

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

但是,无论我尝试什么,它每次返回的都是一个空切片。


素胚勾勒不出你
浏览 313回答 1
1回答

大话西游666

首先,您不需要正则表达式分隔符。其次,使用原始字符串文字来定义正则表达式模式是一个好主意,您只需使用 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之间指定的字符之外的任何字符匹配的否定字符类)}[^...][^]}- 文字}字符
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go