1. 匹配:
import (
"fmt"
"regexp"
) //查詢整個字串中所有連續的3個數字
reg := regexp.mustcompile(`\d`)
match := reg.findallstringsubmatch("aaa111bbb222ccc333",-1)
for i, v := range match
結果:i= 0 v= [111]
i= 1 v= [222]
i= 2 v= [333]
有時候,需要查詢的位置是相對固定的,方法大同小異:
//查詢固定位置出現的3個數字
reg := regexp.mustcompile(`aaa111bbb(\d)ccc(\d)`)
match := reg.findstringsubmatch("aaa111bbb222ccc333")
fmt.println(match[1])
fmt.println(match[2])
結果:222
333
總結:在乙個字串中,需要的內容重複次數不定,就用第乙個例子的findallstringsubmatch函式。如果位置是相對確定的,就用findstringsubmatch函式,在正規表示式中把需要抓取的內容用()小括號括起來就行了。
2. 替換
//例1:
var s = "aaa111bbb222ccc333"
reg := regexp.mustcompile(`\d`)
t := reg.replaceallstring(s,"###")
fmt.println(t)
結果:aaa###bbb###ccc###
//例2:
var s = "aaa111bbb222ccc333"
reg := regexp.mustcompile(`aaa111bbb(\d)ccc333`)
t := reg.replaceallstring(s,"###$***")
fmt.println(t)
結果:###222***
替換的基本邏輯是:將匹配到的結果,用指定的字串替換,如例1中,將所有的連續3個數字的部分用#號替換了。不過有時候,我們並不總是想整體替換,這種情況下需要在指定位置將內容用()小括號括起來,然後用$1表示第1個匹配項,$2表示第2個以此類推。比如在例2中,數字222本身被保留,它前面的部分被###替代了,而它後面的部分則被 *** 替代。 正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
go語言與正規表示式
編譯解析正規表示式 func mustcompile str string regexp返回值 編譯後,go語言能夠識別出來的乙個正規表示式結構體 利用正則從字串中提取有用資訊 func re regexp findallstringsubmatch s string n int string de...
Go語言正規表示式示例
複製 如下 package main import bytes import fmt import rwww.cppcns.comegexp func main 返回結果 true true peach 0 5 peach ea 0 5 1 3 peach punch pinch 0 5 1 3 6...