package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)^(?:\t| )*(?:#|%|;|//|--|REM|C|!) (?:#{64} (.*)|#{32} (.*)|#{16} (.*)|#{8} (.*)|#{4} (.*)|#{2} (.*))$`)
var str = `Valid comments that start with "#":
# ################################################################ First Level
# ################################ Second Level
# ################ Third level
# ######## Fourth Level
# #### Fifth level
# ## Sixth level
Valid comments that start with different characters:
// ################################################################ 1st Level
; ################################ 2nd Level
REM ################ 3rd level
C ######## 4th Level
% #### 5th level
-- ## 6th level
Valid comments that start with spaces or tabs:
# ################################################################ 1st level
; ################################ 2nd Level
Invalid comments:
################################################################ No initial character
; ################################################ Hashes not a power of 2
@ ################ Character not recognized
C ########No space after hashes
% %%%%%%%% No hashes
. # #### Period before spaces
;#### No space after character`
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/