package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?im)(?<=^ *)(?=\$(?:\{[a-z_][a-z0-9_]*\}|[a-z_][a-z0-9_]*)|[a-z_][a-z0-9_]*)(?:(?:\$\{)?([^ \}]+)\}?)(?= *$)`)
var str = `### INFO
# Attempt to capture a parameter identifier inside a text selection, possibly
# wrapped in whitespace, including the following (examples using \`backtick quotes\`):
# - Raw word: e.g. \`param_name\`
# - $parameter expansion: e.g. \`$param_name\`
# - ${parameter} expansion e.g. \`${param_name}\`
### ENDINFO
testvar
testvar
test_var
test5_var
test_var5
$test_var
$test_var4
${test_var4}`
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/