也许我错过了关于go regexp.FindStringSubmatch()
的一些非常基本的东西。我想捕获具有字符串"Serial Number: "
后面的所有数字的组,但得到意外的输出。我的代码如下:
package main
import "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:12334
entry 1:12334
我对python的分组比较熟悉,看起来很简单:
>>> re.search('(\d+)', "Serial Number: 12344").groups()[0]
'12344'
如何让分组在go中工作? 感谢
答案 0 :(得分:2)
FindStringSubmatch
返回一个字符串片段,其中包含s中正则表达式最左边匹配的文本和匹配项
所以:
12334
'(最左边的匹配)12334
”另一个例子:
re := regexp.MustCompile("a(x*)b(y|z)c")
fmt.Printf("%q\n", re.FindStringSubmatch("-axxxbyc-"))
那将打印出来:
"axxxbyc"
"xxx" "y"