在處理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!"]
}