go 正則表達式可提升字符串處理能力,其語法遵循 posix 標準,提供了字符類、元字符、量詞和分組等功能。創建正則表達式可使用 regexp.mustcompile 函數,匹配字符串可使用 matchstring 方法,查找匹配項可使用 findstring 方法,替換字符串可使用 replaceallstring 方法,分組可通過正則表達式中的圓括號捕獲。實戰案例中可使用正則表達式驗證電子郵件地址的有效性。
用 Go 正則表達式提升字符串處理能力
正則表達式(Regex)是一種強大的工具,可以快速輕松地查找、修改和提取字符串中的模式。Go 內置了正則表達式庫,可讓你有效地處理和分析文本數據。
正則表達式語法
Go 中的正則表達式語法遵循 POSIX 標準,并借鑒了 Perl 正則表達式的一些功能。以下是基本語法:
字符類:方括號 [] 用于匹配一組字符。例如,[0-9]
匹配任何數字。
元字符:特殊字符具有特定含義。例如,\d
匹配任何數字,.
匹配任何字符。
量詞:指定字符或模式必須出現多少次。例如,a+
匹配一個或多個 a 字符。
分組:圓括號 () 用于將部分正則表達式分組。這對于捕獲匹配內容非常有用。
創建正則表達式
在 Go 中,可以使用 regexp.MustCompile
函數創建正則表達式:
import "regexp" var re = regexp.MustCompile(`[0-9]+`) // 匹配數字字符串
登錄后復制
匹配字符串
使用 MatchString
方法可以檢查字符串是否與正則表達式匹配:
re.MatchString("1234") // true
登錄后復制
查找匹配項
FindString
方法返回匹配正則表達式的第一個子字符串:
re.FindString("1234abc") // "1234"
登錄后復制
替換字符串
ReplaceAllString
方法使用給定的字符串替換所有匹配項:
re.ReplaceAllString("1234abc1234", "XYZ") // "XYZabcXYZ"
登錄后復制
捕獲組
正則表達式中的分組可以被捕獲和引用:
re = regexp.MustCompile(`(\d+)-(\d+)-(\d+)`) matches := re.FindStringSubmatch("2023-02-28") fmt.Println(matches[1]) // "2023" fmt.Println(matches[2]) // "02" fmt.Println(matches[3]) // "28"
登錄后復制
實戰案例:驗證電子郵件地址
func isValidEmail(email string) bool { 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])?)*$`) return re.MatchString(email) }
登錄后復制