👨‍💻 簡介

在處理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