package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?mi)(?<=^CN=)(.*?)(?=\s?,\s?o)`)
var str = `CN= John Q. Public, O=Agency, C=US
CN= John Q. Public, Jr.,O=Agency, C=US
CN=John Q. Public,O=Agency, C=US
CN=John Q. Pu,blic,O=Agency, C=US
CN=some name,ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
CN=some name, ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
CN=some name-Y- , ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
cn= some name-Y-,ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
cn= some na, o me-Y-,ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
(?<=^CN=) - positive lookahead to find string starts with CN= and discard that match
(.*?) - non greedy seach for any single character
(?=,\s?ou\s=|,\s?o\s?=)
(?=,\s?ou\s=|,\s?o\s?=)`
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/