blob: a4e0da8eaa25faed0349b18d25591d1de1270c0a [file] [log] [blame]
ChaiShushan64379b82013-12-17 06:52:32 -08001// Copyright 2013 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Andrew Gerrande33b9f72012-11-14 10:43:21 +01005package regexp_test
6
7import (
8 "fmt"
9 "regexp"
10)
11
12func Example() {
13 // Compile the expression once, usually at init time.
14 // Use raw strings to avoid having to quote the backslashes.
15 var validID = regexp.MustCompile(`^[a-z]+\[[0-9]+\]$`)
16
17 fmt.Println(validID.MatchString("adam[23]"))
18 fmt.Println(validID.MatchString("eve[7]"))
19 fmt.Println(validID.MatchString("Job[48]"))
20 fmt.Println(validID.MatchString("snakey"))
21 // Output:
22 // true
23 // true
24 // false
25 // false
26}
Volker Doblerb46de712012-11-27 10:33:15 -050027
28func ExampleMatchString() {
29 matched, err := regexp.MatchString("foo.*", "seafood")
30 fmt.Println(matched, err)
31 matched, err = regexp.MatchString("bar.*", "seafood")
32 fmt.Println(matched, err)
33 matched, err = regexp.MatchString("a(b", "seafood")
34 fmt.Println(matched, err)
35 // Output:
36 // true <nil>
37 // false <nil>
38 // false error parsing regexp: missing closing ): `a(b`
39}
40
41func ExampleRegexp_FindString() {
42 re := regexp.MustCompile("fo.?")
43 fmt.Printf("%q\n", re.FindString("seafood"))
44 fmt.Printf("%q\n", re.FindString("meat"))
45 // Output:
46 // "foo"
47 // ""
48}
49
50func ExampleRegexp_FindStringIndex() {
51 re := regexp.MustCompile("ab?")
52 fmt.Println(re.FindStringIndex("tablett"))
53 fmt.Println(re.FindStringIndex("foo") == nil)
54 // Output:
55 // [1 3]
56 // true
57}
58
59func ExampleRegexp_FindStringSubmatch() {
60 re := regexp.MustCompile("a(x*)b(y|z)c")
61 fmt.Printf("%q\n", re.FindStringSubmatch("-axxxbyc-"))
62 fmt.Printf("%q\n", re.FindStringSubmatch("-abzc-"))
63 // Output:
64 // ["axxxbyc" "xxx" "y"]
65 // ["abzc" "" "z"]
66}
67
68func ExampleRegexp_FindAllString() {
69 re := regexp.MustCompile("a.")
70 fmt.Println(re.FindAllString("paranormal", -1))
71 fmt.Println(re.FindAllString("paranormal", 2))
72 fmt.Println(re.FindAllString("graal", -1))
73 fmt.Println(re.FindAllString("none", -1))
74 // Output:
75 // [ar an al]
76 // [ar an]
77 // [aa]
78 // []
79}
80
81func ExampleRegexp_FindAllStringSubmatch() {
82 re := regexp.MustCompile("a(x*)b")
83 fmt.Printf("%q\n", re.FindAllStringSubmatch("-ab-", -1))
84 fmt.Printf("%q\n", re.FindAllStringSubmatch("-axxb-", -1))
85 fmt.Printf("%q\n", re.FindAllStringSubmatch("-ab-axb-", -1))
86 fmt.Printf("%q\n", re.FindAllStringSubmatch("-axxb-ab-", -1))
87 // Output:
88 // [["ab" ""]]
89 // [["axxb" "xx"]]
90 // [["ab" ""] ["axb" "x"]]
91 // [["axxb" "xx"] ["ab" ""]]
92}
93
94func ExampleRegexp_FindAllStringSubmatchIndex() {
95 re := regexp.MustCompile("a(x*)b")
96 // Indices:
97 // 01234567 012345678
98 // -ab-axb- -axxb-ab-
99 fmt.Println(re.FindAllStringSubmatchIndex("-ab-", -1))
100 fmt.Println(re.FindAllStringSubmatchIndex("-axxb-", -1))
101 fmt.Println(re.FindAllStringSubmatchIndex("-ab-axb-", -1))
102 fmt.Println(re.FindAllStringSubmatchIndex("-axxb-ab-", -1))
103 fmt.Println(re.FindAllStringSubmatchIndex("-foo-", -1))
104 // Output:
105 // [[1 3 2 2]]
106 // [[1 5 2 4]]
107 // [[1 3 2 2] [4 7 5 6]]
108 // [[1 5 2 4] [6 8 7 7]]
109 // []
110}
111
112func ExampleRegexp_ReplaceAllLiteralString() {
113 re := regexp.MustCompile("a(x*)b")
114 fmt.Println(re.ReplaceAllLiteralString("-ab-axxb-", "T"))
115 fmt.Println(re.ReplaceAllLiteralString("-ab-axxb-", "$1"))
116 fmt.Println(re.ReplaceAllLiteralString("-ab-axxb-", "${1}"))
117 // Output:
118 // -T-T-
119 // -$1-$1-
120 // -${1}-${1}-
121}
122
123func ExampleRegexp_ReplaceAllString() {
124 re := regexp.MustCompile("a(x*)b")
125 fmt.Println(re.ReplaceAllString("-ab-axxb-", "T"))
126 fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1"))
127 fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1W"))
128 fmt.Println(re.ReplaceAllString("-ab-axxb-", "${1}W"))
129 // Output:
130 // -T-T-
131 // --xx-
132 // ---
133 // -W-xxW-
134}
135
136func ExampleRegexp_SubexpNames() {
137 re := regexp.MustCompile("(?P<first>[a-zA-Z]+) (?P<last>[a-zA-Z]+)")
138 fmt.Println(re.MatchString("Alan Turing"))
139 fmt.Printf("%q\n", re.SubexpNames())
140 reversed := fmt.Sprintf("${%s} ${%s}", re.SubexpNames()[2], re.SubexpNames()[1])
141 fmt.Println(reversed)
142 fmt.Println(re.ReplaceAllString("Alan Turing", reversed))
143 // Output:
144 // true
145 // ["" "first" "last"]
146 // ${last} ${first}
147 // Turing Alan
148}