找到所有与Regex golang匹配的字符串

时间:2016-08-23 13:41:51

标签: regex go

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

{city}, {state} {zip}

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

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

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

1 个答案:

答案 0 :(得分:6)

首先,您不需要正则表达式分隔符。其次,使用原始字符串文字定义正则表达式模式是个好主意,您只需要使用1个反斜杠来转义正则表达式元字符。第三,只有在您需要获取没有{}的值时才需要捕获组,因此,您可以将其删除以获取{city}{state}和{{ 1}}。

您可以使用FindAllString获取所有匹配项:

{zip}

请参阅Go demo

要仅使花括号之间的部分使用FindAllStringSubmatch,并使用包含捕获括号的模式r := regexp.MustCompile(`{[^}]*}`) matches := r.FindAllString("{city}, {state} {zip}", -1)

{([^}]*)}

this Go demo