這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
正則文法 google/re2
Printf 文法
幾個函數方法
名稱 |
說明 |
備忘 |
Match |
驗證Regex是否匹配 []byte |
- |
MatchString |
驗證Regex是否匹配 string |
- |
FindAllString |
Regexp的方法,匹配字串,返回匹配結果組成一個 []string。限定參數 -1表示不限定,其它表示限定。 |
- |
FindAllStringSubmatch |
Regexp的方法,返回一個 [][]string |
- |
樣本
MatchString
func MatchString(pattern string, s string) (matched bool, err error)
matched, err := regexp.MatchString("foo.*", "seafood")fmt.Println(matched, err)matched, err = regexp.MatchString("bar.*", "seafood")fmt.Println(matched, err)matched, err = regexp.MatchString("a(b", "seafood")fmt.Println(matched, err)/*output:true <nil>false <nil>false error parsing regexp: missing closing ): `a(b`*/
FindAllString
func (re *Regexp) FindAllString(s string, n int) []string
re := regexp.MustCompile("a.")fmt.Println(re.FindAllString("paranormal", -1))fmt.Println(re.FindAllString("paranormal", 2))fmt.Println(re.FindAllString("graal", -1))fmt.Println(re.FindAllString("none", -1))/*output:[ar an al][ar an][aa][]*/
FindAllStringSubmatch
func (re *Regexp) FindAllStringSubmatch(s string, n int) [][]string
re := regexp.MustCompile("a(x*)b")fmt.Printf("%q\n", re.FindAllStringSubmatch("-ab-", -1))fmt.Printf("%q\n", re.FindAllStringSubmatch("-axxb-", -1))fmt.Printf("%q\n", re.FindAllStringSubmatch("-ab-axb-", -1))fmt.Printf("%q\n", re.FindAllStringSubmatch("-axxb-ab-", -1))/*output:[["ab" ""]][["axxb" "xx"]][["ab" ""] ["axb" "x"]][["axxb" "xx"] ["ab" ""]]*/
FindString
func (re *Regexp) FindString(s string) string
re := regexp.MustCompile("fo.?")fmt.Printf("%q\n", re.FindString("seafood"))fmt.Printf("%q\n", re.FindString("meat"))/*output:"foo"""*/
FindStringSubmatch
func (re *Regexp) FindStringSubmatch(s string) []string
re := regexp.MustCompile("a(x*)b(y|z)c")fmt.Printf("%q\n", re.FindStringSubmatch("-axxxbyc-"))fmt.Printf("%q\n", re.FindStringSubmatch("-abzc-"))/*output:["axxxbyc" "xxx" "y"]["abzc" "" "z"]*/
註:
1)這裡的 %q,表示雙引號顯示。
2)FindAllStringSubmatch 與 FindStringSubmatch 的區別
re := regexp.MustCompile("a(x*)b")fmt.Printf("%q\n", re.FindAllStringSubmatch("-ab-axb-", -1))fmt.Printf("%q\n", re.FindStringSubmatch("-ab-axb-"))/*output:[["ab" ""] ["axb" "x"]]["ab" ""]*/