用 Golang 玩玩正則表達式

閱讀時間約 2 分鐘

嘿,各位碼農們!如果你有時候跟我一樣,碰到一些特定的字串需要提取、替換或驗證,那麼你可能需要正則表達式(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~ 🚀

30會員
193內容數
歡迎來到【代碼的詩情】:探索程式語言之美 系列,這是一場優雅的程式之旅,透過詩歌的抒發,尋找不同程式語言的美感和精髓。 在這個系列中,我們將透過文字的韻律,深入探索多種程式語言的核心概念和語法,以及它們獨特的應用和技巧。每一篇詩歌都是一個故事,每一段代碼都是一句詩句,讓代碼的旋律和詩情在其中相互交織。
留言0
查看全部
發表第一個留言支持創作者!
KH Huang的沙龍 的其他內容