这是我在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]]
。你能解释一下原因吗?提前谢谢。
答案 0 :(得分:3)
原因是你无法获得重叠的结果。使用支持预测的正则表达式引擎,您可以使用技巧:(?=([0-9]+[dh]){2})
但是语言不支持它。
如果您想获得所有结果,建议您将FindAllStringIndex()
与([0-9]+[dh])
一起使用,然后使用偏移量确定所有连续的子字符串。