我正在尝试返回一个数组或切片,其中包含针对字符串的特定正则表达式的所有匹配项。字符串是:{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 关注
- 312 浏览
添加回答
举报
0/150
提交
取消