我试图返回一个数组,或切片,针对字符串针对特定正则表达式的所有匹配项。字符串是:
{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以上(由于*
比其他量词)字符{
和}
([^...]
是一个否定的字符类匹配任何字符但之间指定的一个(或多个)[^
和]
)}
-文字}
字符本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句