用 Golang 玩玩正則表達式

更新於 2023/08/22閱讀時間約 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~ 🚀

avatar-img
31會員
194內容數
歡迎來到【代碼的詩情】:探索程式語言之美 系列,這是一場優雅的程式之旅,透過詩歌的抒發,尋找不同程式語言的美感和精髓。 在這個系列中,我們將透過文字的韻律,深入探索多種程式語言的核心概念和語法,以及它們獨特的應用和技巧。每一篇詩歌都是一個故事,每一段代碼都是一句詩句,讓代碼的旋律和詩情在其中相互交織。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
KH Huang的沙龍 的其他內容
利用 Goroutines 實現 Observer Pattern。
利用 Goroutines 實現 Observer Pattern。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
今年的母親節在5/14,每年的第二週週日,就是母親節了。 一般來說,大多到店家吃母親節大餐。 而要自閉症者表達對母親的關愛,可以用優勢和特有能力做媒介。 針對自閉症者的特有能力做協助 要是自閉症者沒有特有能力,至少,可以在培養特有能力,進行做媒介。 因此,像記憶力強的自閉症者,可以針對母親的喜好,進
Thumbnail
雖然用行動表達愛意很重要,但適時用言語打動對方的心,也可能會發揮意想不到的奇效。 如果你懷有滿腔愛意,卻不知道該從何說起,不如就參考莎士比亞在《羅密歐與茱麗葉》中寫出的甜蜜告白情話,用最優美的文辭打動他或她的心吧!
之前介紹的動漫桌遊,遊戲王的戰鬥怪獸牌,據說有點難。 其實,熟悉基本規則之後,就可以用遊戲王—怪獸之決鬥的〝決鬥城市〞部分,進行認識〝升級召喚〞。 當然,要是依然無法吸收,又不希望因為遊戲王手遊而出現網路成癮,就可以試試之前介紹的〝說書人〞 先選顏色兔子棋子和顏色投票卡,做為投票用。 接下來,主持人
Thumbnail
在資料驗證(三):自訂公式的教學,我寫了一串可以驗證身分證字號的公式: 如果 A1 是正確的身分證字號格式就會是 TRUE、錯誤的話則是 FALSE。 我會在這篇文稍稍解釋一下上面這串是怎麼做的,也歡迎大家在文章下方留言,告訴我你的看法、或是有更好的建議也可以跟我說說!
Thumbnail
對待阿茲海默氏症(以後稱: 失智症)的病患,他們的心智隨著時間一直往回走,理論上,可以使用部分照顧孩子的理論以彌補對於照顧技巧的不足..
Thumbnail
不知道各位親愛的家屬有沒有遇到過下面的例子:失智長輩一直吵著要去找媽媽、半夜起床吵著要回家、堅持不去洗澡、哄騙之後還是依然故我?身為照顧者的你,無論用講的、用罵的還是用逼的,好像都得不到甚麼效果,隔幾天又再次出現?
Thumbnail
塔羅牌當中有一張叫做「命運之輪」,抽到這一張牌意味著你將有新的開始,命運之輪一般而言會帶來幸運。「命運之輪」的概念也流入的中、英、日文當中,來形容命運將出現改變或進展。不過要注意的是,英文和日文中拿來比喻成命運的對象不同。
Thumbnail
兩方各執己見,爭論不休時,為了讓彼此找到妥協點,我們會勸雙方都各退一步,各自犧牲一點什麼,來換取彼此能給予對方什麼。中文的表達是各自「往後退」,但英文的邏輯反而相反,是希望雙方各「往前走」一點,而日文的表達卻是用「斧頭」來比擬雙方的妥協。這是怎麼回事呢?以下我們來細看。
Thumbnail
看到標題時一般腦中直覺浮現的第一個英文應該是“It’s so funny”吧?funny這個字已經老梗到大家幾乎都會用,如果只是為了講解這句英文就不會特地寫這篇文了。您若常看美國脫口秀,會聽到有個單字更能表達「超好笑」的那種爽感。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
今年的母親節在5/14,每年的第二週週日,就是母親節了。 一般來說,大多到店家吃母親節大餐。 而要自閉症者表達對母親的關愛,可以用優勢和特有能力做媒介。 針對自閉症者的特有能力做協助 要是自閉症者沒有特有能力,至少,可以在培養特有能力,進行做媒介。 因此,像記憶力強的自閉症者,可以針對母親的喜好,進
Thumbnail
雖然用行動表達愛意很重要,但適時用言語打動對方的心,也可能會發揮意想不到的奇效。 如果你懷有滿腔愛意,卻不知道該從何說起,不如就參考莎士比亞在《羅密歐與茱麗葉》中寫出的甜蜜告白情話,用最優美的文辭打動他或她的心吧!
之前介紹的動漫桌遊,遊戲王的戰鬥怪獸牌,據說有點難。 其實,熟悉基本規則之後,就可以用遊戲王—怪獸之決鬥的〝決鬥城市〞部分,進行認識〝升級召喚〞。 當然,要是依然無法吸收,又不希望因為遊戲王手遊而出現網路成癮,就可以試試之前介紹的〝說書人〞 先選顏色兔子棋子和顏色投票卡,做為投票用。 接下來,主持人
Thumbnail
在資料驗證(三):自訂公式的教學,我寫了一串可以驗證身分證字號的公式: 如果 A1 是正確的身分證字號格式就會是 TRUE、錯誤的話則是 FALSE。 我會在這篇文稍稍解釋一下上面這串是怎麼做的,也歡迎大家在文章下方留言,告訴我你的看法、或是有更好的建議也可以跟我說說!
Thumbnail
對待阿茲海默氏症(以後稱: 失智症)的病患,他們的心智隨著時間一直往回走,理論上,可以使用部分照顧孩子的理論以彌補對於照顧技巧的不足..
Thumbnail
不知道各位親愛的家屬有沒有遇到過下面的例子:失智長輩一直吵著要去找媽媽、半夜起床吵著要回家、堅持不去洗澡、哄騙之後還是依然故我?身為照顧者的你,無論用講的、用罵的還是用逼的,好像都得不到甚麼效果,隔幾天又再次出現?
Thumbnail
塔羅牌當中有一張叫做「命運之輪」,抽到這一張牌意味著你將有新的開始,命運之輪一般而言會帶來幸運。「命運之輪」的概念也流入的中、英、日文當中,來形容命運將出現改變或進展。不過要注意的是,英文和日文中拿來比喻成命運的對象不同。
Thumbnail
兩方各執己見,爭論不休時,為了讓彼此找到妥協點,我們會勸雙方都各退一步,各自犧牲一點什麼,來換取彼此能給予對方什麼。中文的表達是各自「往後退」,但英文的邏輯反而相反,是希望雙方各「往前走」一點,而日文的表達卻是用「斧頭」來比擬雙方的妥協。這是怎麼回事呢?以下我們來細看。
Thumbnail
看到標題時一般腦中直覺浮現的第一個英文應該是“It’s so funny”吧?funny這個字已經老梗到大家幾乎都會用,如果只是為了講解這句英文就不會特地寫這篇文了。您若常看美國脫口秀,會聽到有個單字更能表達「超好笑」的那種爽感。