猿问

去正则表达式 FindAllStringSubmatch

这是我在 Go 中的代码片段,可以在这里找到http://play.golang.org/p/L1AcgHf3E4。


package main


import (

    "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]]。你能解释一下为什么吗?提前致谢。


holdtom
浏览 522回答 1
1回答

慕虎7371278

原因是您无法获得重叠的结果。使用支持前瞻的正则表达式引擎,您可以使用技巧:(?=([0-9]+[dh]){2})但 go 语言不支持它。如果你想获得所有结果,我建议你使用FindAllStringIndex()with([0-9]+[dh])然后确定所有带有偏移量的连续子字符串。
随时随地看视频慕课网APP

相关分类

Go
我要回答