You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.6 KiB
Go
81 lines
1.6 KiB
Go
package regex_test
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"gitea.twomorecents.org/Rockingcool/kleingrep/regex"
|
|
)
|
|
|
|
func ExampleReg_Find() {
|
|
regexStr := "b|a"
|
|
regexComp := regex.MustCompile(regexStr)
|
|
|
|
match, _ := regexComp.Find("banana")
|
|
fmt.Println(match.String())
|
|
|
|
// Output: 0 1
|
|
}
|
|
|
|
func ExampleReg_FindAll() {
|
|
regexStr := "b|a"
|
|
regexComp := regex.MustCompile(regexStr)
|
|
|
|
matches := regexComp.FindAll("banana")
|
|
for _, group := range matches {
|
|
fmt.Println(group.String())
|
|
}
|
|
|
|
// Output: 0 1
|
|
// 1 2
|
|
// 3 4
|
|
// 5 6
|
|
}
|
|
|
|
func ExampleReg_FindString() {
|
|
regexStr := `\d+`
|
|
regexComp := regex.MustCompile(regexStr)
|
|
|
|
matchStr := regexComp.FindString("The year of our lord, 2025")
|
|
fmt.Println(matchStr)
|
|
// Output: 2025
|
|
}
|
|
|
|
func ExampleReg_FindSubmatch() {
|
|
regexStr := `(\d)\.(\d)(\d)`
|
|
regexComp := regex.MustCompile(regexStr)
|
|
|
|
match, _ := regexComp.FindSubmatch("3.14")
|
|
fmt.Println(match[0])
|
|
fmt.Println(match[1])
|
|
fmt.Println(match[2])
|
|
// Output: 0 4
|
|
// 0 1
|
|
// 2 3
|
|
}
|
|
|
|
func ExampleReg_Expand() {
|
|
inputStr := `option1: value1
|
|
option2: value2`
|
|
regexStr := `(\w+): (\w+)`
|
|
templateStr := "$1 = $2\n"
|
|
regexComp := regex.MustCompile(regexStr, regex.RE_MULTILINE)
|
|
result := ""
|
|
for _, submatches := range regexComp.FindAllSubmatch(inputStr) {
|
|
result = regexComp.Expand(result, templateStr, inputStr, submatches)
|
|
}
|
|
fmt.Println(result)
|
|
// Output: option1 = value1
|
|
// option2 = value2
|
|
|
|
}
|
|
|
|
func ExampleReg_LiteralPrefix() {
|
|
regexStr := `a(b|c)d*`
|
|
regexComp := regex.MustCompile(regexStr)
|
|
prefix, complete := regexComp.LiteralPrefix()
|
|
fmt.Println(prefix)
|
|
fmt.Println(complete)
|
|
// Output: a
|
|
// false
|
|
}
|