package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)(\/\/[^"\n\r]*(?:"[^"\n\r]*"[^"\n\r]*)*[\r\n]|\/\*([^*]|\*(?!\/))*?\*\/)(?=[^"]*(?:"[^"]*"[^"]*)*$)`)
var str = `hey = "//comment" //comment "
hey = "//comment" //comment
hey = "/" //comment"
//
"//"/"
# complete line should be found
//comment
lorem ipsum # from this to line end
/*
all three lines should be found
*/ but not here anymore
var x = \\"this # should not be found\\"
var y = \\"this /* shouldn\\'t */ match either\\"
var z = \\"but\\" & /* this must match */ \\"_\\"
Argh! what about a \\"multiline string\\\\
with a # mark\\\\
int it ?! \\"
`
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/