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

閱讀時間約 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

17會員
83內容數
golang
留言0
查看全部
發表第一個留言支持創作者!
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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 知乎主页