正則表達式的匹配和應用_第1頁
正則表達式的匹配和應用_第2頁
正則表達式的匹配和應用_第3頁
正則表達式的匹配和應用_第4頁
正則表達式的匹配和應用_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

正則表達式的匹配和應用第一頁,共二十三頁,編輯于2023年,星期三主要內(nèi)容正則表達式簡介正則表達式匹配實例正則表達式應用第二頁,共二十三頁,編輯于2023年,星期三什么是正則表達式定義正則表達式,就是用某種模式去匹配一類字符串的公式。應用可用于查找特定條件的字符串可用于某些工具(vi,grep,find等)中進行模式匹配和替換第三頁,共二十三頁,編輯于2023年,星期三正則表達式基礎普通字符大小寫的字母和數(shù)字元字符具有特殊的含義的字符第四頁,共二十三頁,編輯于2023年,星期三元字符(1).匹配單個字符如:r.t匹配rat,rot等*匹配0個或多個在它之前的那個字符

如:r*t匹配t,rt,rrt等+匹配1或多個正好在它之前的那個字符如:r+t匹配rt、rrt等,但不匹配t\引用符,用來將元字符當作普通的字符

來進行匹配

如;\.匹配字符.第五頁,共二十三頁,編輯于2023年,星期三元字符(2)?匹配0或1個在它之前的那個字符

如:r?t只匹配t和rt|兩個匹配條件進行邏輯“或”運算

如:\(him\|her\)匹配him或者her

$匹配行結(jié)束符

如:boy$匹配以boy為行結(jié)尾的字符串^匹配一行的開始

如:^boy

匹配以boy為行首的字符串第六頁,共二十三頁,編輯于2023年,星期三元字符(3)[]匹配括號中的任何一個字符

如:r[aou]t匹配rat,rot,rut[c1-c2]括號中可以使用連字符-來指定

字符的區(qū)間

如:[0-9]

匹配0,1,2,3,4,5,6,7,8,9[^c1-c2]匹配除了指定區(qū)間之外的字符(補集)如:[^269A-C]

匹配除了2,6,9,A,B,C以外的任何一個字符

第七頁,共二十三頁,編輯于2023年,星期三元字符(4)\<和\>

匹配詞(word)的開始和結(jié)束

如:\<the匹配them,但不匹配other

如:the\>匹配breathe,但不匹配other\(\)

將\(和\)之間的表達式定義為“組”(group),并且將匹配這個表達式的字符保存到一個臨時區(qū)域(一個正則表達式中最多可以保存9個),它們可以用

\1

到\9

的符號來引用。:%s/\(99\)/\1aa/g將99替換成99aa第八頁,共二十三頁,編輯于2023年,星期三元字符(5)\{i\}和\{i,j\}匹配指定數(shù)目的字符,這些字符是在它之前的表達式定義的。如:正則表達式A[0-9]\{3\}

能夠匹配字符“A”后面跟著正好3個數(shù)字字符的串,例如A123、A348等,但是不匹配A12a4。正則表達式[0-9]\{4,6\}

匹配連續(xù)的任意4個、5個或者6個數(shù)字字符。

第九頁,共二十三頁,編輯于2023年,星期三主要內(nèi)容正則表達式簡介正則表達式匹配實例正則表達式應用第十頁,共二十三頁,編輯于2023年,星期三正則表達式的匹配(1)fo+可以與目標對象中的

“fool”,“fo”,或者

“football”等在字母f后面連續(xù)出現(xiàn)一個或多個字母o的字符串相匹配

eg*與目標對象中的

“easy”,“ego”,或者

“egg”等在字母e后面連續(xù)出現(xiàn)零個或多個字母g的字符串相匹配

Wil?與目標對象中的”Win”,“Wilson”等在字母i后面連續(xù)出現(xiàn)零個或一個字母l的字符串相匹配

Jim\{2,6\}規(guī)定字符m可以在匹配對象中連續(xù)出現(xiàn)2-6次,可以同jimmy或jimmmmmy等字符串相匹配第十一頁,共二十三頁,編輯于2023年,星期三正則表達式的匹配(2)^hell以

“hell”,“hello”或

“hellhound”開頭的字符串

ar$以

“car”,“bar”或

“ar”

結(jié)尾的字符串

[A-Z]A到Z范圍內(nèi)任何一個大寫字母相匹配

[a-z]從a到z范圍內(nèi)任何一個小寫字母相匹配

第十二頁,共二十三頁,編輯于2023年,星期三正則表達式的匹配(3)[0-9]從0到9范圍內(nèi)任何一個數(shù)字

([a-z][A-Z][0-9])+任何由字母和數(shù)字組成的字符串to|too|2與目標對象中的

“to”,“too”,或

“2”

相匹配

[^A-C]與目標對象中除A,B,和C之外的任何字符相匹配

第十三頁,共二十三頁,編輯于2023年,星期三主要內(nèi)容正則表達式簡介正則表達式匹配實例正則表達式應用第十四頁,共二十三頁,編輯于2023年,星期三正則表達式在find中的應用find/dev/–nametty[0-9]在/dev下查找以tty開頭,后面跟一個數(shù)字的文件第十五頁,共二十三頁,編輯于2023年,星期三正則表達式在grep中的應用文本文件phone.txtFrancis,John

5-3871Wong,Fred

4-4123Jones,Thomas

1-4122Salazar,Richard

5-2522grep命令1)grep'^S[^]*R'phone.txt2)grep'^[JW]'phone.txt3)grep-v'^[JW]'phone.txt4)grep'^[M-Z]'phone.txt5)grep'^[M-Z].*[12]'phone.txt第十六頁,共二十三頁,編輯于2023年,星期三正則表達式在vi中的應用Vi的替換命令:ranges/pat1/pat2/range是命令執(zhí)行范圍的指定

pat1查找的一個正則表達式

pat2這是希望把匹配串變成的模式的正則表達式

第十七頁,共二十三頁,編輯于2023年,星期三正則表達式在vi中的應用--例1:%s/*//g把一個或者多個空格替換為一個空格。:%s/*$//去掉行尾的所有空格。:%s/^//在每一行頭上加入一個空格。:%s/^[0-9][0-9]*//

去掉行首的所有數(shù)字字符。:%s/b[aeio]g/bug/g將所有的bag、beg、big和bog改為bug。:%s/t\([aou]\)g/h\1t/g將所有tag、tog和tug分別改為hat、hot和hug(注意用group的用法和使用\1引用前面被匹配的字符)。第十八頁,共二十三頁,編輯于2023年,星期三正則表達式在vi中的應用--例2將a,b,c的實例改為b,a,c之前

10,7,2x+13,y-2,10bar(8),x+y+z,5之后7,10,2y-2,x+13,10x+y+z,bar(8),5第十九頁,共二十三頁,編輯于2023年,星期三正則表達式在vi中的應用--例2:%s/\([^,]*\),\([^,]*\),/\2,\1,/g

解釋[^,]

除了逗號之外的任何字符[^,]*0或者多個非逗號字符\([^,]*\)將這些非逗號字符標記為\1,這樣可以在之后的替換模式表達式中引用它\([^,]*\),我們必須找到0或者多個非逗號字符后面跟著一個逗號,并且非逗號字符那部分要標記出來以備后用。第二十頁,共二十三頁,編輯于2023年,星期三正則表達式在vi中的應用--例3文本文件Billytriedreallyhard

Sallytriedreallyreallyhard

Timmytriedreallyreallyreallyhard

Johnnytriedreallyreallyreallyreallyhard轉(zhuǎn)化為Billytriedveryhard

Sallytriedveryhard

Timmytriedveryhard

Johnnytriedveryhard第二十一頁,共二十三頁,編輯于2023年,星期三正則表達式在vi中的應用-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論