Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找与Regex golang匹配的所有字符串_Regex_Go - Fatal编程技术网

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

查找与Regex golang匹配的所有字符串,regex,go,Regex,Go,我试图返回一个数组或切片,其中包含针对字符串的特定正则表达式的所有匹配项。字符串为: {city}, {state} {zip} 我想返回一个数组,其中包含大括号之间字符串的所有匹配项。我已经尝试使用该软件包来实现这一点,但不知道如何返回我正在寻找的内容。这是我当前的代码: r := regexp.MustCompile("/({[^}]*})/") matches := r.FindAllString("{city}, {state} {zip}", -1) 但是,无论我尝试什么,每次返回

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

{city}, {state} {zip}
我想返回一个数组,其中包含大括号之间字符串的所有匹配项。我已经尝试使用该软件包来实现这一点,但不知道如何返回我正在寻找的内容。这是我当前的代码:

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

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

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

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

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

要仅获取大括号之间的部分,请与包含捕获括号的模式一起使用,
{([^{}]*)}

正则表达式详细信息

  • {
    -文字
    {
    字符
  • ([^{}]*)
    -匹配任何0个或更多字符(由于
    *
    量词)的捕获组,而不是
    {
    }
    [^…]
    是一个否定字符类,与
    [^
    ]
    之间指定的字符以外的任何字符相匹配)
  • }
    -文字
    }
    字符

嗯,那很容易。谢谢
r := regexp.MustCompile(`{([^{}]*)}`)
matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)
for _, v := range matches {
    fmt.Println(v[1])
}