// 匹配一個非元音字母,一個元音字母,一個非元音字母
someRegex, _ := regexp.Compile(`[^aouiye]([aouiye])([^aouiye])?`)
m1 := someRegex.FindAllStringSubmatch("somestri", -1)
m2 := someRegex.FindStringSubmatch("somestri")
fmt.Println(m1)
fmt.Println(m2)
//result:
[[som o m] [ri i ]]
[som o m]
re2, _ := regexp.Compile("am(.*)lang(.*)")
//查找Submatch,返回數(shù)組,第一個元素是匹配的全部元素,第二個元素是第一個()里面的,第三個是第二個()里面的
//下面的輸出第一個元素是"am learning Go language"
//第二個元素是" learning Go ",注意包含空格的輸出
//第三個元素是"uage"
submatch := re2.FindSubmatch([]byte(a))
fmt.Println("FindSubmatch", submatch)
for _, v := range submatch {
fmt.Println(string(v))
}
//定義和上面的FindIndex一樣
submatchindex := re2.FindSubmatchIndex([]byte(a))
fmt.Println("submatchindex:",submatchindex)
//FindAllSubmatchIndex,查找所有字匹配的index
submatchallindex := re2.FindAllSubmatchIndex([]byte(a), -1)
fmt.Println("submatchallindex:",submatchallindex)
//FindAllSubmatch,查找所有符合條件的子匹配
submatchall := re2.FindAllSubmatch([]byte(a), -1)
fmt.Println("submatchall:",submatchall)
//result
submatchindex: [2 25 4 17 21 25]
submatchallindex: [[2 25 4 17 21 25]]
submatchall: [[[97 109 32 108 101 97 114 110 105 110 103 32 71 111 32 108 97 110 103 117 97 103 101] [32 108 101 97 114 110 105 110 103 32 71 111 32] [117 97 103 101]]]
s := "圖片(img=32,34)http://www.xiong.com/jpg(/img)圖片(img=32,34)http://www.xiong.com/jpg(/img)"
//非貪婪模式
parse,_ := regexp.Compile("\\(.*?\\)")
fmt.Println(parse.MatchString(s))
fmt.Println(parse.FindString(s))
fmt.Println(parse.ReplaceAllString(s,"+"))
//result
true
(img=32,34) //最左最短匹配
圖片+http://www.xiong.com/jpg+圖片+http://www.xiong.com/jpg+
//貪婪模式
parse,_ := regexp.Compile("\\(.*\\)")
fmt.Println(parse.MatchString(s))
fmt.Println(parse.FindString(s))
fmt.Println(parse.ReplaceAllString(s,"+"))
//result
true
(img=32,34)http://www.xiong.com/jpg(/img)圖片(img=32,34)http://www.xiong.com/jpg(/img)
圖片+
a := "I am learning Go language"
re, _ := regexp.Compile("[a-z]{2,4}")
//查找符合正則的第一個
one := re.Find([]byte(a))
fmt.Println("Find:", string(one))
//查找符合正則的所有slice,n小于0表示返回全部符合的字符串,不然就是返回指定的長度
all := re.FindAll([]byte(a), -1)
fmt.Print("FindAll:")
for i:= 0; i < len(all); i++{
fmt.Print(string(all[i])+",")
}
//查找符合條件的index位置,開始位置和結(jié)束位置
index := re.FindIndex([]byte(a))
fmt.Println("FindIndex", index)
//查找符合條件的所有的index位置,n同上
allindex := re.FindAllIndex([]byte(a), -1)
fmt.Println("FindAllIndex", allindex)
//result
Find: am
FindAll:am,lear,ning,lang,uage
FindIndex [2 4]
FindAllIndex [[2 4] [5 9] [9 13] [17 21] [21 25]]
capture group
創(chuàng)新互聯(lián)建站長期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為宜陽企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都網(wǎng)站制作,宜陽網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
var myExp = regexp.MustCompile(`(?P\d+)\.(\d+).(?P\d+)`)
fmt.Printf("%+v\n", myExp.FindAllStringSubmatch("1234.5678.9",-1))
fmt.Printf("%+v", myExp.FindStringSubmatch("1234.5678.9"))
//result
[[1234.5678.9 1234 5678 9]]
[1234.5678.9 1234 5678 9]