go 中的正則表達(dá)式提供了一種強(qiáng)大的字符串處理工具:使用 regexp 包進(jìn)行正則表達(dá)式操作。利用正則表達(dá)式語法來匹配和操作字符串??善ヅ渥址?、重復(fù)字符、分組、錨點(diǎn)和邊界符。通過 matchstring 匹配字符串、findstringsubmatch 提取匹配和 replaceallstring 替換字符串。應(yīng)用場景包括驗(yàn)證電子郵件地址、提取 html 鏈接等。
Golang 正則表達(dá)式的使用指南
簡介
正則表達(dá)式(regex)是一種強(qiáng)大的工具,用于匹配和操作字符串。Go 提供了內(nèi)置的 regexp 包,可以幫助你輕松使用正則表達(dá)式。
正則表達(dá)式語法
正則表達(dá)式通常使用以下語法:
字符類: 用于匹配單個(gè)字符,例如 [abc] 匹配 ‘a’、’b’ 或 ‘c’。
重復(fù)字符: 限定符用于指定字符重復(fù)的次數(shù),例如 + 表示一次或多次。
分組: 圓括號用于分組字符,例如 (abc) 匹配字符串 “abc”。
錨點(diǎn): 用于匹配字符串的開頭或結(jié)尾,例如 ^ 和 $。
邊界符: 用于匹配字符串的單詞或行邊界,例如 \b。
Go 中的正則表達(dá)式
要使用 regexp 包,請導(dǎo)入它:
import "regexp"
登錄后復(fù)制
以下是一些在 Go 中使用正則表達(dá)式的示例代碼:
匹配字符串
re := regexp.MustCompile("abc")
fmt.Println(re.MatchString("abcdef")) // 輸出:true
登錄后復(fù)制
提取匹配
re := regexp.MustCompile("(\\d+)-([a-z]+)")
fmt.Println(re.FindStringSubmatch("123-abc")) // 輸出:["123-abc", "123", "abc"]
登錄后復(fù)制
替換字符串
re := regexp.MustCompile("abc")
fmt.Println(re.ReplaceAllString("abcdef", "xyz")) // 輸出:"xyzdef"
登錄后復(fù)制
實(shí)戰(zhàn)案例
驗(yàn)證電子郵件地址
re := regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
fmt.Println(re.MatchString("[email protected]")) // 輸出:true
登錄后復(fù)制
從 HTML 中提取鏈接
re := regexp.MustCompile(`<a href="([^"]+)">`)
for _, link := range re.FindAllStringSubmatch(`<a href="/page1">Page 1</a> <a href="/page2">Page 2</a>`, -1) {
fmt.Println(link[1]) // 輸出:"page1" 和 "page2"
}
登錄后復(fù)制






