2020 02 07 GO 正規表示式

2021-10-04 07:13:19 字數 1290 閱讀 1775

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...