1// 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 5package 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} 27 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("foo.?") 43 fmt.Printf("%q\n", re.FindString("seafood fool")) 44 fmt.Printf("%q\n", re.FindString("meat")) 45 // Output: 46 // "food" 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_MatchString() { 113 re := regexp.MustCompile("(gopher){2}") 114 fmt.Println(re.MatchString("gopher")) 115 fmt.Println(re.MatchString("gophergopher")) 116 fmt.Println(re.MatchString("gophergophergopher")) 117 // Output: 118 // false 119 // true 120 // true 121} 122 123func ExampleRegexp_ReplaceAllLiteralString() { 124 re := regexp.MustCompile("a(x*)b") 125 fmt.Println(re.ReplaceAllLiteralString("-ab-axxb-", "T")) 126 fmt.Println(re.ReplaceAllLiteralString("-ab-axxb-", "$1")) 127 fmt.Println(re.ReplaceAllLiteralString("-ab-axxb-", "${1}")) 128 // Output: 129 // -T-T- 130 // -$1-$1- 131 // -${1}-${1}- 132} 133 134func ExampleRegexp_ReplaceAllString() { 135 re := regexp.MustCompile("a(x*)b") 136 fmt.Println(re.ReplaceAllString("-ab-axxb-", "T")) 137 fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1")) 138 fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1W")) 139 fmt.Println(re.ReplaceAllString("-ab-axxb-", "${1}W")) 140 // Output: 141 // -T-T- 142 // --xx- 143 // --- 144 // -W-xxW- 145} 146 147func ExampleRegexp_SubexpNames() { 148 re := regexp.MustCompile("(?P<first>[a-zA-Z]+) (?P<last>[a-zA-Z]+)") 149 fmt.Println(re.MatchString("Alan Turing")) 150 fmt.Printf("%q\n", re.SubexpNames()) 151 reversed := fmt.Sprintf("${%s} ${%s}", re.SubexpNames()[2], re.SubexpNames()[1]) 152 fmt.Println(reversed) 153 fmt.Println(re.ReplaceAllString("Alan Turing", reversed)) 154 // Output: 155 // true 156 // ["" "first" "last"] 157 // ${last} ${first} 158 // Turing Alan 159} 160 161func ExampleRegexp_Split() { 162 a := regexp.MustCompile("a") 163 fmt.Println(a.Split("banana", -1)) 164 fmt.Println(a.Split("banana", 0)) 165 fmt.Println(a.Split("banana", 1)) 166 fmt.Println(a.Split("banana", 2)) 167 zp := regexp.MustCompile("z+") 168 fmt.Println(zp.Split("pizza", -1)) 169 fmt.Println(zp.Split("pizza", 0)) 170 fmt.Println(zp.Split("pizza", 1)) 171 fmt.Println(zp.Split("pizza", 2)) 172 // Output: 173 // [b n n ] 174 // [] 175 // [banana] 176 // [b nana] 177 // [pi a] 178 // [] 179 // [pizza] 180 // [pi a] 181} 182