2020-02-07 GO 正則表達(dá)式

1. 匹配:

import (
  "fmt"
  "regexp"
)
      //查找整個(gè)字符串中所有連續(xù)的3個(gè)數(shù)字
      reg := regexp.MustCompile(`\d{3}`)
      match := reg.FindAllStringSubmatch("aaa111bbb222ccc333",-1)
      for i, v := range match {
          fmt.Println("i=",i,"v=",v)
      }
結(jié)果:
i= 0 v= [111]
i= 1 v= [222]
i= 2 v= [333]

有時(shí)候,需要查找的位置是相對固定的,方法大同小異:

      //查找固定位置出現(xiàn)的3個(gè)數(shù)字
          reg := regexp.MustCompile(`aaa111bbb(\d{3})ccc(\d{3})`)
          match := reg.FindStringSubmatch("aaa111bbb222ccc333")
          fmt.Println(match[1])  
          fmt.Println(match[2])  
結(jié)果:
222
333

總結(jié):在一個(gè)字符串中,需要的內(nèi)容重復(fù)次數(shù)不定,就用第一個(gè)例子的FindAllStringSubmatch函數(shù)。如果位置是相對確定的,就用FindStringSubmatch函數(shù),在正則表達(dá)式中把需要抓取的內(nèi)容用()小括號括起來就行了。

2. 替換

//例1:           
           var s = "aaa111bbb222ccc333"
           reg := regexp.MustCompile(`\d{3}`)
           t := reg.ReplaceAllString(s,"###")
           fmt.Println(t)
結(jié)果:
aaa###bbb###ccc###

//例2:
           var s = "aaa111bbb222ccc333"
           reg := regexp.MustCompile(`aaa111bbb(\d{3})ccc333`)
           t := reg.ReplaceAllString(s,"###${1}***")
           fmt.Println(t)
結(jié)果:
###222***

替換的基本邏輯是:將匹配到的結(jié)果,用指定的字符串替換,如例1中,將所有的連續(xù)3個(gè)數(shù)字的部分用#號替換了。不過有時(shí)候,我們并不總是想整體替換,這種情況下需要在指定位置將內(nèi)容用()小括號括起來,然后用$1表示第1個(gè)匹配項(xiàng),$2表示第2個(gè)以此類推。比如在例2中,數(shù)字222本身被保留,它前面的部分被###替代了,而它后面的部分則被 *** 替代。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Python中的正則表達(dá)式(re) import rere.match #從開始位置開始匹配,如果開頭沒有則無re...
    BigJeffWang閱讀 7,577評論 0 99
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,707評論 0 5
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,674評論 0 4
  • 本文譯自 制作正則引擎的作者 Jan Goyvaerts 為工具 RegexBuddy 寫的教程版權(quán)歸原作者所有注...
    極客圈閱讀 3,401評論 0 25
  • 正則表達(dá)式到底是什么東西?字符是計(jì)算機(jī)軟件處理文字時(shí)最基本的單位,可能是字母,數(shù)字,標(biāo)點(diǎn)符號,空格,換行符,漢字等...
    獅子挽歌閱讀 2,277評論 0 9

友情鏈接更多精彩內(nèi)容