正則表達(dá)式簡介_第1頁
正則表達(dá)式簡介_第2頁
正則表達(dá)式簡介_第3頁
正則表達(dá)式簡介_第4頁
正則表達(dá)式簡介_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2003 iFLYTEK TECHCENTER正則表達(dá)式簡介平臺及嵌入式事業(yè)部平臺及嵌入式事業(yè)部王道廣王道廣 2022年年3月月31日日內(nèi)容介紹內(nèi)容介紹l 什么是正則表達(dá)式l 何時用正則表達(dá)式l 怎么寫正則表達(dá)式內(nèi)容介紹內(nèi)容介紹l 什么是正則表達(dá)式l 何時用正則表達(dá)式l 怎么寫正則表達(dá)式正則表達(dá)式的概念正則表達(dá)式的概念 概念 用來描述或者匹配一系列符合某個句法規(guī)則的字符串的單個字符串 Regular Expression的“Regular”一般被譯為“正則”、“正規(guī)”、“常規(guī)”。此處的“Regular”即是“規(guī)則”、“規(guī)律”的意 思,Regular Expression即“描述某種規(guī)則的表達(dá)式

2、”之意 在很多文本編輯器或其他工具里,通常被用來檢索或替換那些符合某個模式的文本內(nèi)容正則表達(dá)式的歷史正則表達(dá)式的歷史 歷史 最初出現(xiàn)于理論計算機科學(xué)的自動控制理論和形式化語言理論中 Unix工具編輯器QED,ED;文本工具grep 編程語言PerlJava.Net形式化語言理論形式化語言理論 形式化語言理論中的正則表達(dá)式 常量 , , a 算子 RS , R|S , R* 正則語言DFA,NFA,圖靈機,正則文法,前綴文法 不具備的特征遞歸內(nèi)容介紹內(nèi)容介紹l 什么是正則表達(dá)式l 何時用正則表達(dá)式l 怎么寫正則表達(dá)式非具體內(nèi)容查找非具體內(nèi)容查找 非具體內(nèi)容的查找 查找中文中出現(xiàn)的英文單詞,但不具

3、體到某個單詞 查找代碼中的所有注釋 查找代碼中的所有常量值 所有滿足C語言語法的變量名位置的查找位置的查找 需要確定位置 查找所有句首或句尾的單詞 查找所有后跟ing的單詞 查找John,但不要Johnson重復(fù)若干次重復(fù)若干次 不定次重復(fù) 查找5位以上的數(shù)字 查找所有連續(xù)重復(fù)出現(xiàn)的單詞 “123456”為三個16進(jìn)制數(shù),每個前面加上一個0 x內(nèi)容之間的聯(lián)系內(nèi)容之間的聯(lián)系 字符串不同部分之間相互聯(lián)系 查找所有“so that”格式的從句 查找所有后跟數(shù)字的單詞,但結(jié)果不要數(shù)字部分 16進(jìn)制數(shù)字“0 xab”的數(shù)值部分其他應(yīng)用場景其他應(yīng)用場景 其他用通配符等無法準(zhǔn)確或簡單描述的規(guī)則 匹配括號(a

4、 * (b + c) IP地址內(nèi)容介紹內(nèi)容介紹l 什么是正則表達(dá)式l 何時用正則表達(dá)式l 怎么寫正則表達(dá)式多種風(fēng)格多種風(fēng)格 正則表達(dá)式有多種不同風(fēng)格Perl,Vim,.Net 大部分正則表達(dá)式的形式都有如下的結(jié)構(gòu): 選擇 |表示兩個模式之間進(jìn)行選擇;表示可選擇的字符集合 數(shù)量限定?表示0次或一次匹配;*表示0次、1次或多次匹配;+表示1次或多次匹配 匹配()可以用來定義操作符的范圍和優(yōu)先度PCRE PCRE(Perl Compatible Regular Expression, Perl兼容正則表達(dá)式)常用元字符常用元字符 常用元字符代碼 正則表達(dá)式“Johnb”不能匹配字符串“Johnson

5、”,正則表達(dá)式“John”可以匹配字符串“Johnson”。字符轉(zhuǎn)義字符轉(zhuǎn)義 字符轉(zhuǎn)義正則表達(dá)式匹配“.”、“”、“$”等元字符的時候,前面需要加“”進(jìn)行轉(zhuǎn)義。正則表達(dá)式“d”不能匹配字符串“abcde”, 正則表達(dá)式“d”可以匹配字符串“abcde”。重復(fù)次數(shù)重復(fù)次數(shù) 重復(fù)次數(shù)正則表達(dá)式“d6,”表示一個六位或以上數(shù)字。字符類字符類 字符類自定義的字符集合0-9表示0到9十個數(shù)字的集合;aeiou表示元音字母集合;0-9a-zA-Z_相當(dāng)于英文環(huán)境下的w。 正則表達(dá)式“0 x0-9a-fA-F+$”表示十六進(jìn)制數(shù)字。分枝條件分枝條件 分枝條件一個模式表示多種規(guī)則;使用“|”把不同規(guī)則隔開。正

6、則表達(dá)式“010-d8|021-d8”表示北京或上海地區(qū)的8位電話號碼。分組分組 分組(子表達(dá)式)通過“()”指定分組;可以對分組進(jìn)行重復(fù)次數(shù)限定等操作。正則表達(dá)式“010-d8|021-d8”也可寫為“(010|022)-d8”; 正則表達(dá)式“ (20-4d|250-5|01?dd?).)3(20-4d|250-5|01?dd?)”表示IP地址。反義反義 反義不屬于某個能簡單定義的字符類的字符的集合。“S+$”表示不含空白的非空字符串。后向引用后向引用 后向引用用于重復(fù)搜索前面某個分組匹配的文本;從左向右,以分組的左括號為標(biāo)志,第一個出現(xiàn)的分組的組號為1,第二個為2; 1代表分組1匹配的文本

7、。 “b(w+)bs+1b”可以用來匹配重復(fù)的單 詞,例如“go go”,“hello hello”。零寬斷言零寬斷言 零寬斷言 (?=exp)叫零寬度正預(yù)測先行斷言, 它斷言自身出現(xiàn)的位置的后面能匹配表達(dá)式exp; (?=exp)叫零寬度正回顧后發(fā)斷言, 它斷言自身出現(xiàn)的位置的前面能匹配表達(dá)式exp。“d+(?=L)”可以匹配“65535L”中的數(shù)值部分;“(?=0 x)0-9a-f+”匹配16進(jìn)制數(shù)字中的數(shù)值部分。負(fù)向零寬斷言負(fù)向零寬斷言 負(fù)向零寬斷言 (?!exp)叫零寬度負(fù)預(yù)測先行斷言, 它斷言自身出現(xiàn)的位置的后面不能匹配表達(dá)式exp; (?!exp)叫零寬度負(fù)回顧后發(fā)斷言, 它斷言自

8、身出現(xiàn)的位置的前面不能匹配表達(dá)式exp。“w+(?!.)”可以匹配不是位于末尾的單詞;“(?!)w+”匹配不位于字符串開頭的單詞。貪婪與懶惰貪婪與懶惰 貪婪與懶惰當(dāng)正則表達(dá)式中包含能接受重復(fù)的限定符時,通常的行為是(在使整個表達(dá)式能得到匹配的前提下)匹配盡可能多的字符 ; 在表示重復(fù)的元字符后面加上“?”,即可匹配盡可能少的字符。“/*.*?*/”可以匹配C語言中的注釋部分。選項選項 選項 i忽略大小寫 m多行模式 s單行模式 x忽略模式中的空白常用正則表達(dá)式常用正則表達(dá)式 常用正則表達(dá)式 電子郵件(a-z0-9_.-+)(da-z.-+).(a-z.2,6)$ URL(https?:/)?(da-z.-+).(a-z.2,6)(/w .-*)*/?$ HTML標(biāo)簽

溫馨提示

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

評論

0/150

提交評論