package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?mi)(^(HL\/)+HL$)|(^HLx\d+$)|(^HL$)`)
var str = `Guard
HL/H
-
HL/HL
L/L
L/L
HL/HL
L/HL
HL/HL
L/HL
HL/HL/HL
L/HL/HL
HL/HL
HL/HL/HL
HL/HL/HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL/HL
HL/HL/HL
HL/HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL/L/HL
HL/HL
HL/HL
HL/H
HL/HL
HL/HL
HL/HL
HL/HL
HL
HL/HL
HL/HL
HL/HL
HL
LH/LH
L/H
HL/HL
HL/HL
HL
LH/LH
L/H
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL/HL
HL/HL/HL
HL
HL
HL
HL
HL
(B+F)+LP+LK
(B/F)+LP+LK
LP+LK
HL
HL
HL
HL
L
HL
L
HL
HL
HL
L
L
L
L
L
L
HL
LP+LK
-
-
-
F/B+LP+LK
F+LP+LK
HL
HL
HL
HL
HL
H
HL
LP+LK
B+LP+LK on backturned opponent
HL
LP+LK
HL
HL
HL
HL
HL
H
B/F+LP+LK
LP+LK
LP+LK
LP+LK
LP+LK
LP+LK
LP+LK
=+
=+
LP+LK
H
H
HL
HL
HL
LP+LK
HL
HL
HL
LP+LK
HL
HL
L
HL
L
L
HL
LP+LK
HLx2
HL
HL
HL
B+LP+LK
B/F+LP+LK
B/F+LP+LK
B/F+LP+LK
HL
HL
HL
HL
HL
LP+LK
Close to Oponnent On Air LP+LK
LP+LK
(F)+LP+LK
HL/HL/HL
HL
HL/HL
HL
LP+LK
HL
HL
HL
L
L
L
LP+LK
HL
HL
HL
B+LP+LK
HL
HL
(Air) LP+LK
LP+LK
LP+LK
B+LP+LK
LP+LK
HL
HL
HL
LP+LK
(B/F)+LP+LK
H
F+LP+LK
HL
H/H
HL
HL
HL
HL
HL/HL
HL/HL/HL
HL/HL/HL
HL
HL
HL
HLx7
HL/HL/HL
HLx4
HLx3+HL/Lx3 Down
HL/HL/HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H
H
HL
HL
HL
L
H
H
HL
Impossible
HL
H
HL
HL
H
H
H
H
H
H
H
H
H
H
H
H
H
HL
HL
HL
H
HL
HL
HL
L
HL
HL
HL
HL
HL
HL
HL
HL
H
H
H
H
HL
H
HL
Impossible
HL
HL
HL
H
H
H
H
H
HL
HL/HL
HL
H
HL
HL
H
H
H
HL
H
HL
L
H
HL
HL
HL
HL
HL
H
HL
HL
H
H
H
HL/HL
HL
-
HL
H
H
HL
HL
HL/HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
Impossible
Impossible
Impossible
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
L
L
L
L
L
L
L
L
HL
L
HL
HL
HL
HL
HL
HL
L
L
L
L
HLx1~5
HLx1~5
HLx1~5
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
HL
HL
HL
HL
HL
HL
Impossible
HL
H
H
H
HL
HL
Impossible
Impossible
Impossible
Impossible
Impossible
Impossible
H
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
L
HL/HL/HL
HL/HL
Impossible
Impossible
Impossible
HL
Impossible
Impossible
Impossible
HL
HL
HL
HL
HL
HL
Hx2
HL
Hx2
HL
HL
HL
H
HLx4
HL
HL
HLx3
HL
L/HL
HL/HL
HL
H
HLx2
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL
HLx2
HL
HL
HL
HL
H/H
H
HL/HL
HL/HL/HL
HL
HL
HL/HL/HL
HL/H
L
HL/HL
HL
H
H
H(far) or L(close)
H
HLx2
HL
HL
HL
-
HL
HL/HL/HL
HL/HL/HL
H
HL/HL/HL/HL
HL/HL/HL/HL/HL
H
HL/HL/HL
HL
HL/HL
HL
HL
HL
HL
H/H
H/H
H/H
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
L
L
L
L
HL
HL
HL
HL
HL
L
L
L
L
L
L
L
L
L
L
H
HL
HL
H
H
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H
HL/HL/HL/HL
HL/HL/HL/HL/HL
HL/HL
H
H
H
H
H
H
H
H
H
-
HL
HL
H
H
H
H
H
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
HL/HL/HL/HL
-
H
HLx4
H
H
HL
HL
HL
HL
H/H
H/H
H/H
Lx2
Lx4
Lx2
HL
HL
HL/HL
H/L
-
-
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
HL
HL
HL
HL
L
L
L
L
HL
HL
HL
HL
HL
HL/HL
H
HL
HL
HL
HL
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
-
-
HL
HL/H/H
HL
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H/H
H
HLx2
HLx1~5
HL/HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL
H
HL/H/H
-
HL
Lx5
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
L
L
L
L
L
L
L
L
HL
HL
HL
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H
H
H
H
H
H
H
H
H
H
H
HL
HL
HL
HL
H
H
H
H
H
H
H
H
H
H
H
H
HL
HLx2
H
HL
HL
H
-
HL
HL
HL
HL
HL
HL
HL
HL
HL
HLx2
HLx2
HLx2
HLx3
HLx3
HLx3
-
-
-
HL
HL
L
HL
HL
HL/HL/HL
HL
HL
HL
HL
HL
HL/HL
HL
HL
H
H
H
H
H
H
H
H
H
H
HL/H/H
HL
HL
HL
H
H
H
H
H
HL
HL
HL
HL
H
HL
HL
HL
HLx2
HL/HL/HL
HLx2
HL
HLx2
HL/HL
HL
HLx2
Hx3
HL
H
H
H
-
HL
HL
HL
HL
HL
HL
HL
HL/HL/HL
HL
HL
H
H
H
H
H
H
H
H
H
HL
HL
HL
HL
HL
HL
H/H
HL
HL
HLx2
L
L
HL
H
HL
HL
HL
HL
HL
HL
H
H
H
H
H
H
H
H
HL
L
H
H
H
H
HL
HL
HL
HLx2
HL
HL
H
Impossible
HL
H
H
H
HLx2
H
H
HL
HL
HL
HL
H
HL
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
HL
H
H
H
-
H
`
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/