go 中的正則表達(dá)式提供了一種強(qiáng)大的字符串處理工具:使用 regexp 包進(jìn)行正則表達(dá)式操作。利用正則表達(dá)式語(yǔ)法來匹配和操作字符串。可匹配字符類、重復(fù)字符、分組、錨點(diǎn)和邊界符。通過 matchstring 匹配字符串、findstringsubmatch 提取匹配和 replaceallstring 替換字符串。應(yīng)用場(chǎng)景包括驗(yàn)證電子郵件地址、提取 html 鏈接等。
Golang 正則表達(dá)式的使用指南
簡(jiǎn)介
正則表達(dá)式(regex)是一種強(qiáng)大的工具,用于匹配和操作字符串。Go 提供了內(nèi)置的 regexp
包,可以幫助你輕松使用正則表達(dá)式。
正則表達(dá)式語(yǔ)法
正則表達(dá)式通常使用以下語(yǔ)法:
字符類: 用于匹配單個(gè)字符,例如 [abc]
匹配 ‘a’、’b’ 或 ‘c’。
重復(fù)字符: 限定符用于指定字符重復(fù)的次數(shù),例如 +
表示一次或多次。
分組: 圓括號(hào)用于分組字符,例如 (abc)
匹配字符串 “abc”。
錨點(diǎn): 用于匹配字符串的開頭或結(jié)尾,例如 ^
和 $
。
邊界符: 用于匹配字符串的單詞或行邊界,例如 \b
。
Go 中的正則表達(dá)式
要使用 regexp
包,請(qǐng)導(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("username@example.com")) // 輸出: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ù)制