![《Go語言從入門到精通》Go語言中的正則表達(dá)式_第1頁](http://file4.renrendoc.com/view/fdfdedbdd9cf5b5a0c10369e42417bdf/fdfdedbdd9cf5b5a0c10369e42417bdf1.gif)
![《Go語言從入門到精通》Go語言中的正則表達(dá)式_第2頁](http://file4.renrendoc.com/view/fdfdedbdd9cf5b5a0c10369e42417bdf/fdfdedbdd9cf5b5a0c10369e42417bdf2.gif)
![《Go語言從入門到精通》Go語言中的正則表達(dá)式_第3頁](http://file4.renrendoc.com/view/fdfdedbdd9cf5b5a0c10369e42417bdf/fdfdedbdd9cf5b5a0c10369e42417bdf3.gif)
![《Go語言從入門到精通》Go語言中的正則表達(dá)式_第4頁](http://file4.renrendoc.com/view/fdfdedbdd9cf5b5a0c10369e42417bdf/fdfdedbdd9cf5b5a0c10369e42417bdf4.gif)
![《Go語言從入門到精通》Go語言中的正則表達(dá)式_第5頁](http://file4.renrendoc.com/view/fdfdedbdd9cf5b5a0c10369e42417bdf/fdfdedbdd9cf5b5a0c10369e42417bdf5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Go語言中的正則表達(dá)式Go語言從入門到精通了解正則表達(dá)式的基本概念與用途了解正則表達(dá)式的一些進(jìn)階應(yīng)用01REGEX02USAGE03ADVANCEDtarget目標(biāo)掌握Go語言中正則表達(dá)式的常見用法目錄導(dǎo)航8.1正則表達(dá)式的基本概念與用法Contents正則表達(dá)式的概念
并非一般表達(dá)計(jì)算過程的數(shù)學(xué)表達(dá)式表達(dá)一種字符串“匹配模式”(patternmatching)常用用途:判斷某個(gè)字符串是否符合一定的規(guī)則從一個(gè)字符串中找出符合一定規(guī)則的子串用于替換尋找出的子串判斷字符串是否含有符合一定規(guī)則的子串patternT
:=
"太*高興"
s1
:=
"她真是太太太太太高興了!"
matched,
errT
:=
regexp.MatchString(patternT,
s1)
if
errT
!=
nil
{
tools.Printfln("正則表達(dá)式匹配時(shí)發(fā)生錯(cuò)誤:%v",
errT.Error())
return}
if
matched
{
tools.Printfln("字符串%#v中包含符合正則表達(dá)式%#v的子串。",
s1,
patternT)}
else
{
tools.Printfln("字符串%#v中不包含符合正則表達(dá)式%#v的子串。",
s1,
patternT)}從字符串中提取符合一定規(guī)則的子串patternT
:=
"太*高興"
s1
:=
"她真是太太太太太高興了!"
regexT,
errT
:=
regexp.Compile(patternT)
if
errT
!=
nil
{
t.Printfln("編譯正則表達(dá)式時(shí)發(fā)生錯(cuò)誤:%v",
errT.Error())
return}
matches
:=
regexT.FindAllString(s1,
-1)
t.Printfln("查找結(jié)果:%#v",
matches)用通配符“.”匹配任意字符regexT
:=
regexp.MustCompile("叫.*。")
s1
:=
"他的名字叫張小寶。"
s2
:=
"他的名字叫王小寶。"
t.Printfln("查找結(jié)果:%#v",
regexT.FindAllString(s1,
-1))
t.Printfln(“查找結(jié)果:%#v”,
regexT.FindAllString(s2,
-1))
貪婪與非貪婪匹配regexT
:=
regexp.MustCompile("真是太*")
t.Printfln("查找結(jié)果:%#v",
regexT.FindAllString("她真是太太太太太高興了!",
-1))
regexT
=
regexp.MustCompile("真是太*?")
t.Printfln("查找結(jié)果:%#v",
regexT.FindAllString("她真是太太太太太高興了!",
-1))分組提取子串regexT
:=
regexp.MustCompile("(.*?)的名字叫(.*?)。")
s
:=
"他的名字叫張小寶。他的名字叫馬小寶。她的名字叫歐陽小寶。它的名字叫喵小寶。"
listT
:=
regexT.FindStringSubmatch(s)
t.Printfln("查找結(jié)果:%#v",
listT)
t.Printfln("%v叫%v",
listT[1],
listT[2])
提取所有符合條件的帶捕獲組的匹配結(jié)果regexT
:=
regexp.MustCompile("(.*?)的名字叫(.*?)。")
s
:=
"他的名字叫張小寶。他的名字叫馬小寶。她的名字叫歐陽小寶。它的名字叫喵小寶。"
listT
:=
regexT.FindAllStringSubmatch(s,
-1)
t.Printfln("查找結(jié)果:%#v",
listT)
for
i,
v
:=
range
listT
{
t.Printfln("第%v組結(jié)果:%v叫%v",
i+1,
v[1],
v[2])}小提示:如果有第0組是指全部匹配的子串替換符合正則表達(dá)式的子串regexT
:=
regexp.MustCompile("重(.*?)公斤")
s
:=
"這個(gè)蘋果重0.5公斤,那個(gè)橙子重0.6公斤。"
t.Printfln("第1次替換后結(jié)果:%#v",
regexT.ReplaceAllString(s,
"沉"))t.Printfln("第2次替換后結(jié)果:%#v",
regexT.ReplaceAllString(s,
"重$1"))t.Printfln("第3次替換后結(jié)果:%#v",
regexT.ReplaceAllString(s,
"重$1kg"))t.Printfln("第4次替換后結(jié)果:%#v",
regexT.ReplaceAllString(s,
"重${1}kg"))轉(zhuǎn)義字符如果在正則表達(dá)式中需要表達(dá)“*”號(hào)、“?”號(hào)這些具有特殊含義的字符本身(而不是指任意次數(shù)或貪婪模式的指示符),需要用類似字符串中轉(zhuǎn)義字符的方式來書寫一般是在正則表達(dá)式中有特殊意義的字符前加反斜杠“\”,例如:\*、\?、\.等而“\”字符本身,則需要寫成“\\”目錄導(dǎo)航8.2正則表達(dá)式進(jìn)階知識(shí)Contents單個(gè)字符的表達(dá)匹配指定范圍內(nèi)的字符:[a-z0-9],匹配指定范圍之外的字符:[^a-g蘋果0-2\.]匹配數(shù)字或非數(shù)字的字符:\d
和\D匹配空白與非空白的字符:\s
和\S
其他一些字符匹配:\r、\n、\w、\W、\pN、\PN、\P{Han}表達(dá)字符出現(xiàn)的次數(shù)(數(shù)量)“+”表示字符至少出現(xiàn)1次:[a-g蘋果0-2\.]+“*”表示字符出現(xiàn)0次或n次“?”表示字符出現(xiàn)0次或1次表示出現(xiàn)固定次數(shù):“[an]{3}”表示匹配字符“a”或“n”連續(xù)出現(xiàn)3次的情況表示出現(xiàn)次數(shù)的范圍:“[an]{2,5}”表示匹配字符“a”或“n”連續(xù)出現(xiàn)2次至5次的情況,默認(rèn)按貪婪模式,非貪婪模式加“?”;可以省略其中一個(gè)數(shù)字,例如去掉5表示匹配2次以上的情況非字符匹配(位置匹配)
\A
與\z分別匹配字符串的開始與結(jié)尾,“\A.*\z”顯然將匹配整個(gè)字符串,“\A[\s\S]*\z”將匹配包括換行符在內(nèi)的整個(gè)字符串“\b”匹配單詞邊界“^”、“$”匹配字符串的開始與結(jié)束,多行模式下匹配行首與行尾使用標(biāo)志位進(jìn)行設(shè)置(?i)[a-n]+忽略大小寫匹配(?s).+ .可以匹配換行符(?m)^.*$
多行模式可選子串匹配s
:=
"我們是工程師。你們是工程師。湯姆和漢森也是工程師。"
regexT
:=
regexp.MustCompile(`(我們|你們)是工程師`)
t.Printfln("查找結(jié)果:%#v",
regexT.FindAllStringSubmatch(s,
-1))
非捕獲組s
:=
"我們是工程師。你們是工程師。湯姆和漢森也是工程師。"
regexT
:=
regexp.MustCompile(`(?:我們|你們)是工程師`)
t.Printfln("查找結(jié)果:%#v",
regexT.FindAllStringSubmatch(s,
-1))
獲取匹配到子串的索引位置s
:=
"世界很大,世界也很小。"
regexT
:=
regexp.MustCompile(`很.`)
locationT
:=
regexT.FindStringIndex(s)
t.Printfln("查找結(jié)果:%#v",
locationT)
t.Printfln("子串內(nèi)容:%#v",
s[locationT[0]:locationT[1]])
用正則表達(dá)式分割字符串s
:=
"世界很大,世界也很小。天涯才咫尺。"
regexT
:=
regexp.MustCompile(`[,。]`)
t.Printfln("分割結(jié)果:%#v",
regexT.Split(s,
-1))
判斷整個(gè)字符串是否匹配正則表達(dá)式s
:=
"abc123xyz"
regexT
:=
regexp.MustCompile(`[a-z]+`)
t.Printfln("判斷結(jié)果:%#v,匹配子串:%#v",
regexT.MatchString(s),
regexT.FindString(s))
regexT
=
regexp.MustCompile(`\A[a-z]+\z`)
t.Printfln("判斷結(jié)果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023二年級(jí)語文上冊(cè) 第八單元 23 紙船和風(fēng)箏說課稿 新人教版
- 2025駕駛員安全生產(chǎn)聘用合同
- 2025X大學(xué)技術(shù)合同管理辦法
- 2025建筑外墻改造工程合同
- Module 9 Unit 1 We laughed a lot(說課稿)-2023-2024學(xué)年外研版(三起)英語五年級(jí)下冊(cè)001
- Unit 1 School Subjects Lesson3(說課稿)-2023-2024學(xué)年人教新起點(diǎn)版英語三年級(jí)下冊(cè)
- 公司法律事務(wù)代理合同范例
- 2024-2025學(xué)年高中歷史 第三單元 各國經(jīng)濟(jì)體制的創(chuàng)新和調(diào)整 第14課 社會(huì)主義經(jīng)濟(jì)體制的建立(1)教學(xué)說課稿 岳麓版必修2
- Module 2 Unit 1 I helped my mum.(說課稿)-2024-2025學(xué)年外研版(一起)英語四年級(jí)上冊(cè)
- 9小水滴的訴說 第二課時(shí) 說課稿-2023-2024學(xué)年道德與法治二年級(jí)下冊(cè)(統(tǒng)編版)
- 2025南網(wǎng)科研院系統(tǒng)內(nèi)招聘13人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 關(guān)于合同知識(shí)的全面解讀
- Unit 6 Beautiful landscapes Integration 說課稿 -2024-2025學(xué)年譯林版英語七年級(jí)下冊(cè)001
- 五四制青島版三年級(jí)數(shù)學(xué)下學(xué)期教學(xué)計(jì)劃
- 2024年常德職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫
- 2025 年福建省中考語文試題:作文試題及范文
- 短視頻運(yùn)營(yíng)績(jī)效考核表KPI-企業(yè)管理
- 【譯林】九下英語單詞默寫表
- IEC 62368-1標(biāo)準(zhǔn)解讀-中文
- 15J403-1-樓梯欄桿欄板(一)
- QC課題提高金剛砂地面施工一次合格率
評(píng)論
0/150
提交評(píng)論