正則表達(dá)式語法和使用的詳細(xì)信息請(qǐng)參考 維基百科。
在下面的程序里,我們將在字符串中對(duì)正則表達(dá)式進(jìn)行匹配。
如果是簡(jiǎn)單模式,使用 Match
方法便可:
ok, _ := regexp.Match(pat, []byte(searchIn))
變量 ok 將返回 true 或者 false,我們也可以使用 MatchString
:
ok, _ := regexp.MatchString(pat, searchIn)
更多方法中,必須先將正則通過 Compile
方法返回一個(gè) Regexp 對(duì)象。然后我們將掌握一些匹配,查找,替換相關(guān)的功能。
示例 9.2 pattern.go:
package main
import (
"fmt"
"regexp"
"strconv"
)
func main() {
//目標(biāo)字符串
searchIn := "John: 2578.34 William: 4567.23 Steve: 5632.18"
pat := "[0-9]+.[0-9]+" //正則
f := func(s string) string{
v, _ := strconv.ParseFloat(s, 32)
return strconv.FormatFloat(v * 2, 'f', 2, 32)
}
if ok, _ := regexp.Match(pat, []byte(searchIn)); ok {
fmt.Println("Match Found!")
}
re, _ := regexp.Compile(pat)
//將匹配到的部分替換為"##.#"
str := re.ReplaceAllString(searchIn, "##.#")
fmt.Println(str)
//參數(shù)為函數(shù)時(shí)
str2 := re.ReplaceAllStringFunc(searchIn, f)
fmt.Println(str2)
}
輸出結(jié)果:
Match Found!
John: ##.# William: ##.# Steve: ##.#
John: 5156.68 William: 9134.46 Steve: 11264.36
Compile
函數(shù)也可能返回一個(gè)錯(cuò)誤,我們?cè)谑褂脮r(shí)忽略對(duì)錯(cuò)誤的判斷是因?yàn)槲覀兇_信自己正則表達(dá)式是有效的。當(dāng)用戶輸入或從數(shù)據(jù)中獲取正則表達(dá)式的時(shí)候,我們有必要去檢驗(yàn)它的正確性。另外我們也可以使用 MustCompile
方法,它可以像 Compile
方法一樣檢驗(yàn)正則的有效性,但是當(dāng)正則不合法時(shí)程序?qū)?panic(詳情查看第 13.2 節(jié))。