這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Go語言中使用正則校正需要用到 regexp 包
先介紹幾種常用的方法:
1、 使用MatchString函數
regexp.MatchString(pattern string, s string) pattern為Regex,s為需要校正的字元傳例:match,_:=regexp.MatchString("p([a-z]+)ch","peddach") 返回的第一個參數是bool類型即匹配結果,第二個參數是error類型 fmt.Println(match) //結果為true2、使用 Compile函數或MustCompile函數它們的區別是Compile返回兩個參數*Regexp,error類型,而MustCompile只返回*Regexp類型func Compile(expr string) (*Regexp, error) {}func MustCompile(str string) *Regexp {}它們的作用是將Regex進行編譯,返回最佳化的 Regexp 結構體,該結構體有需多方法。例 r,_:=regexp.Compile("p([a-z]+)ch") b:=r.MatchString("peach") fmt.Println(b) //結果為true或 r1:=regexp.MustCompile("p([a-z]+)ch") b1:r1.MatchString("peach") fmt.Println(b) //結果為true3、Regexp結構體中一些常用的方法 r,_:=regexp.Compile("p([a-z]+)ch") fmt.Println(r.MatchString("peach")) //j結果:true //尋找匹配的字串 fmt.Println(r.FindString("peach punch")) //列印結果:peach //尋找匹配字串開始和結束位置的索引,而不是匹配內容[0 5] fmt.Println(r.FindStringIndex("peach punch")) //列印結果: [0 5] //返回完全符合和局部匹配的字串,例如,這裡會返回 p([a-z]+)ch 和 `([a-z]+) 的資訊 fmt.Println(r.FindStringSubmatch("peach punch")) //列印結果:[peach ea] //返回完全符合和局部匹配的索引位置 fmt.Println(r.FindStringSubmatchIndex("peach punch")) //列印結果: [0 5 1 3] //返回所有的匹配項,而不僅僅是最初相符項。正整數用來限制匹配次數 fmt.Println(r.FindAllString("peach punch pinch",-1)) //列印結果:[peach punch pinch] fmt.Println(r.FindAllString("peach punch pinch",2)) //匹配兩次 列印結果:[peach punch] //返回所有的完全符合和局部匹配的索引位置 fmt.Println(r.FindAllStringSubmatchIndex("peach punch pinch",-1)) //列印結果: [[0 5 1 3] [6 11 7 9] [12 17 13 15]] //上面的例子中,我們使用了字串作為參數,並使用了如 MatchString 這樣的方法。我們也可以提供 []byte參數並將 String 從函數命中去掉。 fmt.Println(r.Match([]byte("peach"))) //列印結果:true r1:=regexp.MustCompile("p([a-z]+)ch") //將匹配的結果,替換成新輸入的結果 fmt.Println(r1.ReplaceAllString("a peach","<fruit>")) //列印結果: a <fruit> //Func 變數允許傳遞匹配內容到一個給定的函數中, in:=[]byte("a peach") out:=r1.ReplaceAllFunc(in,bytes.ToUpper) fmt.Printf(string(out)) //列印結果: a PEACH