package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)(?x)
(?(DEFINE)
(?<nrun> [0-9]+)
(?<range> (?&nrun) (-(?&nrun))? )
(?<sep> ,)
)
^( (?&range) ((?&sep)|$) )+$`)
var str = `^((^|,)([0-9]+(-[0-9]+)?(,|$))+)$
1,2,3-5,6
1,2,3-5,6,
1
1-3
,1,2,3
23,25-89,99
23,12,3-5,15
1,2,3-,4,5-7
1,2,3-,4,5-7,
1,2,-3,4,5
1,2,-,3,4
1,2,,,3,4
1a2-2aoe
abc2-23ght`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Golang, please visit: https://golang.org/pkg/regexp/