嘿,各位碼農們!如果你有時候跟我一樣,碰到一些特定的字串需要提取、替換或驗證,那麼你可能需要正則表達式(regex)。今天,我要帶大家用 Go 語言 (Golang) 來處理這玩意
regexp
包首先,我們要用到 regexp
這個包。不用擔心,這個是 Go 的標準庫,不用額外安裝,直接 import
就可以啦!
import "regexp"
來看看最基本的匹配怎麼寫:
func IsMatch(s string) bool {
re := regexp.MustCompile(`go{2,}gle`) // 匹配 'goggle', 'googgle', 'goo...ogle'
return re.MatchString(s)
}
這個 MustCompile
是什麼鬼?其實它就是將正則表達式的字串編譯成正則對象。如果正則語法有問題,它會直接 panic,所以要確保你的 regex 是對的!
假設你想從一堆文字中提取所有的 email,怎麼做?
func ExtractEmails(s string) []string {
re := regexp.MustCompile(`[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}`)
return re.FindAllString(s, -1)
}
這裡的 -1
表示我們想要提取所有匹配的 email。
這邊想要將所有的 Go
變成 Golang
,怎麼辦?
func ReplaceGo(s string) string {
re := regexp.MustCompile(`\bGo\b`)
return re.ReplaceAllString(s, "Golang")
}
這裡的 \b
是匹配詞的邊界,確保我們不會誤殺 Gopher
。
好啦,今天就先介紹到這裡。正則表達式是個超強的工具,但也請別忘了有時候太複雜的 regex 會讓人頭疼,記得適可而止!Go 語言提供了很友善的界面來處理正則表達式,希望你也能愛上這玩意。打完收工,Go Go Go~ 🚀