这是我在 Go 中的代码片段,可以在这里找到http://play.golang.org/p/L1AcgHf3E4。package mainimport ( "fmt" "regexp")func main() { reg := regexp.MustCompile("([0-9]+[dh]){2}") str := "2d3h5d" fmt.Println(reg.FindAllStringSubmatch(str, -1))}我希望结果是[[2d3h 3h] [3h5d 5d]],但结果是[[2d3h 3h]]。你能解释一下为什么吗?提前致谢。
1 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
原因是您无法获得重叠的结果。使用支持前瞻的正则表达式引擎,您可以使用技巧:(?=([0-9]+[dh]){2})
但 go 语言不支持它。
如果你想获得所有结果,我建议你使用FindAllStringIndex()
with([0-9]+[dh])
然后确定所有带有偏移量的连续子字符串。
- 1 回答
- 0 关注
- 521 浏览
添加回答
举报
0/150
提交
取消