Skip to content

Commit b46de71

Browse files
vdoblerrsc
authored andcommitted
regexp: add examples
Update golang#4125 R=minux.ma, rsc CC=golang-dev https://golang.org/cl/6847107
1 parent 4228eb7 commit b46de71

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

src/pkg/regexp/example_test.go

+122
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,125 @@ func Example() {
2020
// false
2121
// false
2222
}
23+
24+
func ExampleMatchString() {
25+
matched, err := regexp.MatchString("foo.*", "seafood")
26+
fmt.Println(matched, err)
27+
matched, err = regexp.MatchString("bar.*", "seafood")
28+
fmt.Println(matched, err)
29+
matched, err = regexp.MatchString("a(b", "seafood")
30+
fmt.Println(matched, err)
31+
// Output:
32+
// true <nil>
33+
// false <nil>
34+
// false error parsing regexp: missing closing ): `a(b`
35+
}
36+
37+
func ExampleRegexp_FindString() {
38+
re := regexp.MustCompile("fo.?")
39+
fmt.Printf("%q\n", re.FindString("seafood"))
40+
fmt.Printf("%q\n", re.FindString("meat"))
41+
// Output:
42+
// "foo"
43+
// ""
44+
}
45+
46+
func ExampleRegexp_FindStringIndex() {
47+
re := regexp.MustCompile("ab?")
48+
fmt.Println(re.FindStringIndex("tablett"))
49+
fmt.Println(re.FindStringIndex("foo") == nil)
50+
// Output:
51+
// [1 3]
52+
// true
53+
}
54+
55+
func ExampleRegexp_FindStringSubmatch() {
56+
re := regexp.MustCompile("a(x*)b(y|z)c")
57+
fmt.Printf("%q\n", re.FindStringSubmatch("-axxxbyc-"))
58+
fmt.Printf("%q\n", re.FindStringSubmatch("-abzc-"))
59+
// Output:
60+
// ["axxxbyc" "xxx" "y"]
61+
// ["abzc" "" "z"]
62+
}
63+
64+
func ExampleRegexp_FindAllString() {
65+
re := regexp.MustCompile("a.")
66+
fmt.Println(re.FindAllString("paranormal", -1))
67+
fmt.Println(re.FindAllString("paranormal", 2))
68+
fmt.Println(re.FindAllString("graal", -1))
69+
fmt.Println(re.FindAllString("none", -1))
70+
// Output:
71+
// [ar an al]
72+
// [ar an]
73+
// [aa]
74+
// []
75+
}
76+
77+
func ExampleRegexp_FindAllStringSubmatch() {
78+
re := regexp.MustCompile("a(x*)b")
79+
fmt.Printf("%q\n", re.FindAllStringSubmatch("-ab-", -1))
80+
fmt.Printf("%q\n", re.FindAllStringSubmatch("-axxb-", -1))
81+
fmt.Printf("%q\n", re.FindAllStringSubmatch("-ab-axb-", -1))
82+
fmt.Printf("%q\n", re.FindAllStringSubmatch("-axxb-ab-", -1))
83+
// Output:
84+
// [["ab" ""]]
85+
// [["axxb" "xx"]]
86+
// [["ab" ""] ["axb" "x"]]
87+
// [["axxb" "xx"] ["ab" ""]]
88+
}
89+
90+
func ExampleRegexp_FindAllStringSubmatchIndex() {
91+
re := regexp.MustCompile("a(x*)b")
92+
// Indices:
93+
// 01234567 012345678
94+
// -ab-axb- -axxb-ab-
95+
fmt.Println(re.FindAllStringSubmatchIndex("-ab-", -1))
96+
fmt.Println(re.FindAllStringSubmatchIndex("-axxb-", -1))
97+
fmt.Println(re.FindAllStringSubmatchIndex("-ab-axb-", -1))
98+
fmt.Println(re.FindAllStringSubmatchIndex("-axxb-ab-", -1))
99+
fmt.Println(re.FindAllStringSubmatchIndex("-foo-", -1))
100+
// Output:
101+
// [[1 3 2 2]]
102+
// [[1 5 2 4]]
103+
// [[1 3 2 2] [4 7 5 6]]
104+
// [[1 5 2 4] [6 8 7 7]]
105+
// []
106+
}
107+
108+
func ExampleRegexp_ReplaceAllLiteralString() {
109+
re := regexp.MustCompile("a(x*)b")
110+
fmt.Println(re.ReplaceAllLiteralString("-ab-axxb-", "T"))
111+
fmt.Println(re.ReplaceAllLiteralString("-ab-axxb-", "$1"))
112+
fmt.Println(re.ReplaceAllLiteralString("-ab-axxb-", "${1}"))
113+
// Output:
114+
// -T-T-
115+
// -$1-$1-
116+
// -${1}-${1}-
117+
}
118+
119+
func ExampleRegexp_ReplaceAllString() {
120+
re := regexp.MustCompile("a(x*)b")
121+
fmt.Println(re.ReplaceAllString("-ab-axxb-", "T"))
122+
fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1"))
123+
fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1W"))
124+
fmt.Println(re.ReplaceAllString("-ab-axxb-", "${1}W"))
125+
// Output:
126+
// -T-T-
127+
// --xx-
128+
// ---
129+
// -W-xxW-
130+
}
131+
132+
func ExampleRegexp_SubexpNames() {
133+
re := regexp.MustCompile("(?P<first>[a-zA-Z]+) (?P<last>[a-zA-Z]+)")
134+
fmt.Println(re.MatchString("Alan Turing"))
135+
fmt.Printf("%q\n", re.SubexpNames())
136+
reversed := fmt.Sprintf("${%s} ${%s}", re.SubexpNames()[2], re.SubexpNames()[1])
137+
fmt.Println(reversed)
138+
fmt.Println(re.ReplaceAllString("Alan Turing", reversed))
139+
// Output:
140+
// true
141+
// ["" "first" "last"]
142+
// ${last} ${first}
143+
// Turing Alan
144+
}

0 commit comments

Comments
 (0)