package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)^(
((?:22[0-3]|2([0-1])?\d?|([1-9][0-9]?|1[0-9]{2}))\.) # a group, 1-223 with "."
((?:25[0-5]|2[0-4]\d|[01]?(\d{0,2}))\.){2} # b and c groups 0-255 with "."
((25[0-5]|2[0-4]\d|[01]?(\d{0,2})) # d group, ends with optional netmask instead of "." // i tried making this non-optional as a group to solve my problem.
(\/([89]|[12]\d|3[0-2]))?) # netmask
,?\h?){1,50}$ # allow comma separated, optional space between, up to 50 IPs`)
var str = `1.1.1.
1.1.1.2
1.1.1.2/23
1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23,1.1.1.2/23`
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/