常用的正则表达式
package main import ( "fmt" "regexp" ) func main() { match, _ := regexp.MatchString("p([a-z]+)ch", "peach") fmt.Println(match) r := regexp.MustCompile("p([a-z]+)ch") fmt.Println(r.MatchString("peach")) fmt.Println(r.FindString("peach punch")) fmt.Println(r.FindStringIndex("peach punch")) fmt.Println(r.FindStringSubmatch("peach punch")) fmt.Println(r.FindStringSubmatchIndex("peach punch")) fmt.Println(r.FindAllString("peach punch pinch", -1)) fmt.Println(r.FindAllStringIndex("peach punch pinch", -1)) fmt.Println(r.FindAllString("peach punch pinch", 2)) } /* 输出: true true peach [0 5] [peach ea] [0 5 1 3] [peach punch pinch] [[0 5] [6 11] [12 17]] [peach punch] */
匹配特殊字符,转义
需要匹配特殊字符的时候,其他语言通常用\.
,\*
这样的转义方法,
但是在go语言中却行不通。
参考链接:http://stackoverflow.com/questions/6770898/unknown-escape-sequence-error-in-go
需要使用`
符号括起来
忽略大小写,换行
package main import ( "fmt" "regexp" ) func main() { r := regexp.MustCompile(`(?s)fo.*zzo`) const s = ` foo bar zzo` p := r.FindAllString(s, -1) fmt.Println(p[0]) fmt.Println(r.FindAllString(s, -1)) }
参考链接: