查找与正则表达式golang匹配的所有字符串
我试图返回一个数组或切片,针对字符串针对特定正则表达式的所有匹配项。字符串是:
{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以上(由于*
比其他量词)字符{
和}
([^...]
是一个否定的字符类匹配任何字符但之间指定的一个(或多个)[^
和]
)}
-文字}
字符
以上是 查找与正则表达式golang匹配的所有字符串 的全部内容, 来源链接: utcz.com/qa/428140.html