也许我错过了关于 go 的一些非常基本的东西regexp.FindStringSubmatch()。我想用字符串后面的所有数字捕获组,"Serial Number: "但得到意外输出。我的代码如下:package mainimport "fmt"import "regexp"func main() { x := "Serial Number: 12334" r := regexp.MustCompile(`(\d+)`) res := r.FindStringSubmatch(x) for i,val := range res { fmt.Printf("entry %d:%s\n", i,val) }}输出是:entry 0:12334entry 1:12334我更熟悉 python 的分组,这看起来很简单:>>> re.search('(\d+)', "Serial Number: 12344").groups()[0]'12344'我怎样才能让分组在 go 中工作?谢谢
1 回答
梦里花落0921
TA贡献1772条经验 获得超6个赞
来自Regexp.FindStringSubmatch
:
FindStringSubmatch
返回一段字符串,其中包含 s 中正则表达式最左边匹配项的文本以及匹配项
所以:
第一个条目是匹配的内容:'
12334
'(最左边的匹配)第二个条目是捕获的组:'
12334
'
另一个例子:
re := regexp.MustCompile("a(x*)b(y|z)c") fmt.Printf("%q\n", re.FindStringSubmatch("-axxxbyc-"))
那将打印:
最左边的匹配:
"axxxbyc"
两个被捕获的组:
"xxx" "y"
- 1 回答
- 0 关注
- 370 浏览
添加回答
举报
0/150
提交
取消