如何在 Go 中使用正則表達式

更新於 2024/09/25閱讀時間約 6 分鐘


raw-image

👨‍💻 簡介

在處理string時,正則表達式是一個非常有用的工具。Go語言的regexp package 可以使用正則表達式,用來執行如檢查string是否匹配某個模式、提取匹配的subString等操作。

匹配功能

  • regexp.MatchString:檢查一個string是否匹配某個模式。
  • regexp.Compile:編譯一個正則表達式。

語法如下:

// 檢查一個string是否匹配某個模式。
func regexp.MatchString(pattern string, s string) (matched bool, err error)

// 編譯一個正則表達式。
func regexp.Compile(expr string) (*Regexp, error)
package main

import (
"fmt"
"regexp"
)

func main() {
// 檢查string是否匹配模式
matched, err := regexp.MatchString("Go", "Hello, Go!")
if err != nil {
fmt.Println(err)
}
fmt.Println("Matched:", matched) // true
}

提取功能

  • regexp.FindString:找到第一個匹配的subString。
  • regexp.FindAllString:找到所有匹配的subString。

語法如下:

// 找到第一個匹配的subString。
func (re *Regexp) FindString(s string) string

// 找到所有匹配的subString。
func (re *Regexp) FindAllString(s string, n int) []string
package main

import (
"fmt"
"regexp"
)

func main() {
re, err := regexp.Compile("Go")
if err != nil {
fmt.Println(err)
}

// 找到第一個匹配的subString
firstMatch := re.FindString("Hello, Go! Go is awesome!")
fmt.Println("First Match:", firstMatch) // "Go"

// 找到所有匹配的subString
allMatches := re.FindAllString("Hello, Go! Go is awesome!", -1)
fmt.Println("All Matches:", allMatches) // ["Go" "Go"]
}

替換功能

  • regexp.ReplaceAllString:替換匹配的subString。

語法如下:

// 替換匹配的subString。
func (re *Regexp) ReplaceAllString(src, repl string) string
package main

import (
"fmt"
"regexp"
)

func main() {
re, err := regexp.Compile("Go")
if err != nil {
fmt.Println(err)
}

// 替換匹配的subString
replaced := re.ReplaceAllString("Hello, Go! Go is awesome!", "Golang")
fmt.Println(replaced) // "Hello, Golang! Golang is awesome!"
}

其他功能

  • regexp.Split:按照正則表達式分割string。

語法如下:

// 按照正則表達式分割string。
func (re *Regexp) Split(s string, n int) []string
package main

import (
"fmt"
"regexp"
)

func main() {
re, err := regexp.Compile(" ")
if err != nil {
fmt.Println(err)
}
// 按照正則表達式分割string
parts := re.Split("Hello, Go! Go is awesome!", -1)
fmt.Println(parts) // ["Hello,", "Go!", "Go", "is", "awesome!"]
}

📚Reference

avatar-img
17會員
83內容數
golang
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Alan的開發者天地 的其他內容
👨‍💻 簡介 一開始介紹基本資料型別時有稍微提到一點string的處理,今天介紹string的一些操作,像是檢查的功能、修改的功能、比較的功能等等。
👨‍💻 簡介 昨天講到 os package,今天繼續補充 os package底下的 exec package,這個package主要用來執行外部指令和處理指令的輸入和輸出,包括如何設定指令、執行指令以及處理輸出等等。
👨‍💻 簡介 今天快速介紹一下對檔案的操作所使用的package os,包括檔案和資料夾操作等。 檔案和資料夾操作 os package 可以執行各種檔案和資料夾操作,如建立、讀取、寫入、刪除檔案,以及取得資料夾內容等。
👨‍💻簡介 在 Go 語言中,reflect package是用來檢查和操作變數的type、value和struct。常見用法有檢察 type、調用方法,以及修改變數的value。今天簡單介紹 reflect package的主要功能、使用方法和常見用法。
👨‍💻 簡介 今天的encoding/json package是我日常在開發web時很常用到的package之一,主要是用來將Go struct和 JSON 之間進行轉換。主要功能為資料序列化(marshalling)和反序列化(unmarshalling)。
👨‍💻簡介 要處理日期和時間,就必須知道這個Package -> time,Go提供了內建的timePackage。 今天主要介紹time的功能,包括時間操作、格式化等等,以及常見用法。
👨‍💻 簡介 一開始介紹基本資料型別時有稍微提到一點string的處理,今天介紹string的一些操作,像是檢查的功能、修改的功能、比較的功能等等。
👨‍💻 簡介 昨天講到 os package,今天繼續補充 os package底下的 exec package,這個package主要用來執行外部指令和處理指令的輸入和輸出,包括如何設定指令、執行指令以及處理輸出等等。
👨‍💻 簡介 今天快速介紹一下對檔案的操作所使用的package os,包括檔案和資料夾操作等。 檔案和資料夾操作 os package 可以執行各種檔案和資料夾操作,如建立、讀取、寫入、刪除檔案,以及取得資料夾內容等。
👨‍💻簡介 在 Go 語言中,reflect package是用來檢查和操作變數的type、value和struct。常見用法有檢察 type、調用方法,以及修改變數的value。今天簡單介紹 reflect package的主要功能、使用方法和常見用法。
👨‍💻 簡介 今天的encoding/json package是我日常在開發web時很常用到的package之一,主要是用來將Go struct和 JSON 之間進行轉換。主要功能為資料序列化(marshalling)和反序列化(unmarshalling)。
👨‍💻簡介 要處理日期和時間,就必須知道這個Package -> time,Go提供了內建的timePackage。 今天主要介紹time的功能,包括時間操作、格式化等等,以及常見用法。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在不同年紀間,我們面臨著類似的財務挑戰,從花錢到致富,再到家庭開支的管理。本文探討瞭如何透過有效的財務規劃,釐清投資與保險的選擇,並提供一對一的諮詢服務來提升財務健康。無論你是在職場初期還是已步入家庭,都能從中獲得寶貴的理財建議,以降低財務風險,並實現經濟自由。
Thumbnail
本文探討了在「再部落化」社會中信用網路的重要性。文章解釋了從中心化社會到分散式社會的轉變,強調了傳統成功路徑的失效。文章提出了通過建立多元化人際網路、重視信譽、善用社交媒體等方法來適應新環境,並以實例說明如何在工作中應用這些概念。
Thumbnail
在數位時代,知識變現成為追求財務自由的重要方式。本文探討如何將你的知識、技能和經驗轉化為收入產生的產品或服務,並詳細介紹了在臺灣可用的各種平臺和資源,包括線上課程、電子書、社群媒體等。此外,提供多元收入來源的策略,幫助你逐步達到財務自由,享受生活的真正自由。
Thumbnail
本屆 #JCConf 邀請到 張品翔 Pino 分享「如何在 Kubernetes 環境實現 Keycloak Cluster」 講題簡介: 在微服務的架構下,使用者或是各服務間的權控也是相當重要的議題。 國泰世華銀行的海外消金上雲案,選擇了開源的 Keycloak (Identity
Thumbnail
今天要來和大家分享亡靈節活動體驗,以及Pokémon GO City Safari即將在台南舉辦的購票資訊。
少子化以後,後段高中職的身障生逐年增加,甚至全校的有照身障生,還來到了總學生數的六分之一。可是學生增加了以後,相關的特教人力與資源卻沒有跟著增加。許多第一線的老師也沒有特教觀念,分不清楚身障生與一班生的差異,甚至有只要好手好腳會講話就不算身障生的迷思,史的全校一百多個學生,只能靠著人力缺乏的輔導室給
Thumbnail
有多種情況下我們需要從API取消請求: 如果我們正在建立一個支付系統,並且請求一直進行,但使用者希望立即取消這筆訂單。這就是為什麼開發者會建立這個功能的原因。 從電子商務購買商品。使用者意外關閉了頁面,無法立即返回上一頁。 訂閱取消。 ......等等 這將對對這個系統沒有信心的使用者產生影響。因
Thumbnail
其實可以用這樣的架構描述: 1️⃣ 先概略描述你的缺點的具體樣貌 2️⃣ 接著舉例解釋可以呈現這個缺點的事件 那我們來照著這個架構練習講看看缺點是甚麼:
Thumbnail
一、家具在室內設計中扮演著相當重要的角色 不僅可以為室內環境帶來實用性, 更可以營造出舒適、美觀的氛圍。 好的家具可以提升整個室內空間的格調和質感, 讓室內環境更加舒適、實用和美觀。 家具的種類和款式繁多, 可以根據不同的需求和風格進行選擇和搭配。 例如 : 對於一個小空間而言,可以選擇多功能性的家
Thumbnail
这次 Figma 制裁大疆事件,让不少从业人员认识到了数据安全的重要性。 注释:本文方法对于 FlowUs 、Notion 等笔记软件均通用。本文以 FlowUs 为例。 📷 📷 📷 📷 那么,设计协作和文档协作有无相互整合的可能性? 📷 📷 FlowUs 官网 FlowUs 知乎主页
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在不同年紀間,我們面臨著類似的財務挑戰,從花錢到致富,再到家庭開支的管理。本文探討瞭如何透過有效的財務規劃,釐清投資與保險的選擇,並提供一對一的諮詢服務來提升財務健康。無論你是在職場初期還是已步入家庭,都能從中獲得寶貴的理財建議,以降低財務風險,並實現經濟自由。
Thumbnail
本文探討了在「再部落化」社會中信用網路的重要性。文章解釋了從中心化社會到分散式社會的轉變,強調了傳統成功路徑的失效。文章提出了通過建立多元化人際網路、重視信譽、善用社交媒體等方法來適應新環境,並以實例說明如何在工作中應用這些概念。
Thumbnail
在數位時代,知識變現成為追求財務自由的重要方式。本文探討如何將你的知識、技能和經驗轉化為收入產生的產品或服務,並詳細介紹了在臺灣可用的各種平臺和資源,包括線上課程、電子書、社群媒體等。此外,提供多元收入來源的策略,幫助你逐步達到財務自由,享受生活的真正自由。
Thumbnail
本屆 #JCConf 邀請到 張品翔 Pino 分享「如何在 Kubernetes 環境實現 Keycloak Cluster」 講題簡介: 在微服務的架構下,使用者或是各服務間的權控也是相當重要的議題。 國泰世華銀行的海外消金上雲案,選擇了開源的 Keycloak (Identity
Thumbnail
今天要來和大家分享亡靈節活動體驗,以及Pokémon GO City Safari即將在台南舉辦的購票資訊。
少子化以後,後段高中職的身障生逐年增加,甚至全校的有照身障生,還來到了總學生數的六分之一。可是學生增加了以後,相關的特教人力與資源卻沒有跟著增加。許多第一線的老師也沒有特教觀念,分不清楚身障生與一班生的差異,甚至有只要好手好腳會講話就不算身障生的迷思,史的全校一百多個學生,只能靠著人力缺乏的輔導室給
Thumbnail
有多種情況下我們需要從API取消請求: 如果我們正在建立一個支付系統,並且請求一直進行,但使用者希望立即取消這筆訂單。這就是為什麼開發者會建立這個功能的原因。 從電子商務購買商品。使用者意外關閉了頁面,無法立即返回上一頁。 訂閱取消。 ......等等 這將對對這個系統沒有信心的使用者產生影響。因
Thumbnail
其實可以用這樣的架構描述: 1️⃣ 先概略描述你的缺點的具體樣貌 2️⃣ 接著舉例解釋可以呈現這個缺點的事件 那我們來照著這個架構練習講看看缺點是甚麼:
Thumbnail
一、家具在室內設計中扮演著相當重要的角色 不僅可以為室內環境帶來實用性, 更可以營造出舒適、美觀的氛圍。 好的家具可以提升整個室內空間的格調和質感, 讓室內環境更加舒適、實用和美觀。 家具的種類和款式繁多, 可以根據不同的需求和風格進行選擇和搭配。 例如 : 對於一個小空間而言,可以選擇多功能性的家
Thumbnail
这次 Figma 制裁大疆事件,让不少从业人员认识到了数据安全的重要性。 注释:本文方法对于 FlowUs 、Notion 等笔记软件均通用。本文以 FlowUs 为例。 📷 📷 📷 📷 那么,设计协作和文档协作有无相互整合的可能性? 📷 📷 FlowUs 官网 FlowUs 知乎主页