2023-08-21|閱讀時間 ‧ 約 3 分鐘

用 Golang 玩玩正則表達式

嘿,各位碼農們!如果你有時候跟我一樣,碰到一些特定的字串需要提取、替換或驗證,那麼你可能需要正則表達式(regex)。今天,我要帶大家用 Go 語言 (Golang) 來處理這玩意


1. regexp

首先,我們要用到 regexp 這個包。不用擔心,這個是 Go 的標準庫,不用額外安裝,直接 import 就可以啦!

import "regexp"


2. 基礎匹配

來看看最基本的匹配怎麼寫:

func IsMatch(s string) bool {
re := regexp.MustCompile(`go{2,}gle`) // 匹配 'goggle', 'googgle', 'goo...ogle'
return re.MatchString(s)
}

這個 MustCompile 是什麼鬼?其實它就是將正則表達式的字串編譯成正則對象。如果正則語法有問題,它會直接 panic,所以要確保你的 regex 是對的!


3. 提取資訊

假設你想從一堆文字中提取所有的 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。


4. 替換字串

這邊想要將所有的 Go 變成 Golang,怎麼辦?

func ReplaceGo(s string) string {
re := regexp.MustCompile(`\bGo\b`)
return re.ReplaceAllString(s, "Golang")
}

這裡的 \b 是匹配詞的邊界,確保我們不會誤殺 Gopher


小結

好啦,今天就先介紹到這裡。正則表達式是個超強的工具,但也請別忘了有時候太複雜的 regex 會讓人頭疼,記得適可而止!Go 語言提供了很友善的界面來處理正則表達式,希望你也能愛上這玩意。打完收工,Go Go Go~ 🚀

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.