我想让所有工作都在字符串中-在一对{word}
之间
示例:
payment://pay?id={appid}&transtoken={transtoken}
预期结果:
["appid", "transtoken"]
正则表达式为{\w+}
,我只能得到[{appid}, {transtoken}]
。
请帮助我解决这个问题。
答案 0 :(得分:3)
您可以对FindAllStringSubmatch
使用以下模式:
{(\w+)}
请参阅Go regexp文档:
FindAllStringSubmatch
是FindStringSubmatch
的“全部”版本;它返回表达式的所有连续匹配的一部分,如程序包注释中的“全部”描述所定义。返回值nil表示不匹配。
和
FindStringSubmatch
返回包含s
中正则表达式最左侧匹配的文本以及子定义的匹配项(如果有)的字符串切片通过包注释中的“子匹配”描述。返回值nil表示不匹配。
请参见Go demo:
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"
答案 1 :(得分:-1)
代码:
String example = "payment://pay?id={appid}&transtoken={transtoken}";
Matcher m = Pattern.compile("\\{(.+?)\\}").matcher(example);
while (m.find()){
System.out.println(m.group(1));
}
输出:
appid
transtoken
我希望这对您有帮助...