Regex 正则表达式在字符串中找到许多单词

Regex 正则表达式在字符串中找到许多单词,regex,go,Regex,Go,我想得到字符串中的所有工作-在{word} 例如: payment://pay?id={appid}&transtoken={transtoken} 预期结果: ["appid", "transtoken"] 使用regex partern:{\w+},我只能获得[{appid},{transtoken}] 请帮我解决这个问题。您可以将以下模式用于: 请参阅Go regexp文档: FindAllStringSubmatch是FindStringSubmatch的“全部”版本;它返回

我想得到字符串中的所有工作-在
{word}

例如:

payment://pay?id={appid}&transtoken={transtoken}
预期结果:

["appid", "transtoken"]
使用regex partern:
{\w+}
,我只能获得
[{appid},{transtoken}]


请帮我解决这个问题。

您可以将以下模式用于:

请参阅Go regexp文档:

FindAllStringSubmatch
FindStringSubmatch
的“全部”版本;它返回表达式的所有连续匹配的片段,如包注释中的“all”描述所定义。返回值nil表示不匹配

FindStringSubmatch
返回一段字符串,其中包含
s
中正则表达式最左侧匹配项的文本以及其子表达式的匹配项(如果有),如包注释中的“Submatch”描述所定义。返回值nil表示不匹配

见:

输出:

"appid"
"transtoken"

使用
`{(\w+)}`
它不起作用,兄弟@WiktorStribiżew.:(是的,看。
package main

import (
    "fmt"
    "regexp"
)

func main() {
    s := `payment://pay?id={appid}&transtoken={transtoken}`
    rex := regexp.MustCompile(`{(\w+)}`)
    results := rex.FindAllStringSubmatch(s,-1)
    for _, value := range results  {
        fmt.Printf("%q\n", value[1])
    }
}
"appid"
"transtoken"