課件第9章正則表達(dá)式_第1頁
課件第9章正則表達(dá)式_第2頁
課件第9章正則表達(dá)式_第3頁
課件第9章正則表達(dá)式_第4頁
課件第9章正則表達(dá)式_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第九章正則表達(dá)式-2-了解正則表達(dá)式的概念理解正則表達(dá)式的定義元素掌握常用的正則表達(dá)式理解Java對(duì)正則表達(dá)式的支持掌握Pattern類的用法掌握Matcher類的用法 目標(biāo)-3-正則表達(dá)式 正則表達(dá)式(regular expressions)是一種描述字符串集的通用標(biāo)準(zhǔn),它是以字符串集中各字符串的共有特征為依據(jù)的。正則表達(dá)式提供了一種緊湊的、動(dòng)態(tài)的語言,能夠以一種完全通用的方式來解決各種字符串處理問題正則表達(dá)式最早出現(xiàn)于Perl,目前,各操作系統(tǒng)及大部分程序設(shè)計(jì)語言都支持正則表達(dá)式。正則表達(dá)式主要用于:搜索與替換:特定模式字符串的查找與替換驗(yàn)證:檢查某個(gè)字符串是否符合特定的匹配模式。如Ema

2、il、HTTP地址、FTP地址、身份證號(hào)碼等的驗(yàn)證。解析:從一個(gè)文本中獲取有用的字符串信息,如從HTML文件中提取超鏈接。 -4-模式 模式(Pattern)是正則表達(dá)式中最重要的部分,其規(guī)定了正則表達(dá)式的匹配法則和規(guī)范正則表達(dá)式常用的定義元素有:元字符字符類轉(zhuǎn)義字符限定符反義邏輯或分組-5-元字符-1 元字符(Meta charactor)是能夠匹配一個(gè)位置或某個(gè)字符串的一個(gè)字符。元字符分為兩類:匹配位置的元字符匹配字符的元字符匹配位置的元字符有3個(gè): 、$ 和b,用來指示匹配開始的位置,其作用 如下:字符作用示例指示從行的開始位置開始匹配如:java匹配以“java”開始的行$指示從行的結(jié)

3、束位置開始匹配如:java$匹配以“java”開始和結(jié)尾的行b匹配單詞的開始或結(jié)束位置如:bjava匹配以“java”開始的字符串,而“java”之前必須是單詞的分界處-6-元字符-2匹配字符的元字符有7個(gè): 元字符-1字符作用示例.匹配除換行符之外的任意字符如:.c匹配第3個(gè)字符是c的行,“abc”匹配成功w匹配單字字符(a到z、A到Z、0到9及下劃線)如:.w匹配第3個(gè)字符是單字字符的行,“abc”匹配成功W匹配非單字字符如:.W匹配第3個(gè)字符不是單字字符的行,“ab%”匹配成功s匹配空白字符(如空格、制表符、換行符等)如:.s匹配第3個(gè)字符是空白字符的行,“ab cd”匹配成功S匹配非空

4、白字符如:.S匹配第3個(gè)字符是空白字符的行,“abcd”匹配成功d匹配數(shù)字字符(0到9)如:.S匹配第3個(gè)字符是數(shù)字字符的行,“ab3d”匹配成功D匹配非數(shù)字字符如:.S匹配第3個(gè)字符不是數(shù)字字符的行,“abdd”匹配成功-7-字符類 元字符只能匹配一個(gè)位置或字符集合中的一個(gè)字符。如果要匹配字符集合(如:0,1,2,3,4)時(shí),則需要定義匹配的字符集合。字符類就是方括號(hào)中的一個(gè)字符集,只匹配括號(hào)內(nèi)的任意字符。在使用字符類進(jìn)行匹配時(shí),對(duì)于連續(xù)的字符(如:az、09等),如果全部在括號(hào)中列舉很不方便,此時(shí)可以使用范圍符“-”來定義字符的范圍。示例:8位的電話號(hào)碼:b0-90-90-90-90-90

5、-90-90-9b-8-轉(zhuǎn)義字符 對(duì)于諸如“”、“$”這樣的字符都有特殊意義,如果需要在正則表達(dá)式中匹配字符串中“”和“$”等字符,則需要使用轉(zhuǎn)義字符“”(反斜杠)來解決這一問題。例如:.可以匹配字符“.”??梢云ヅ渥址啊?。匹配 的正則表達(dá)式:www.baidu 常用需要轉(zhuǎn)義的字符有:.、$、|、*、+、?、-9-限定符 限定符用于指定允許特定字符或字符集自身重復(fù)出現(xiàn)的次數(shù)。常用的限定符:限定符作用示例*匹配前面的子表達(dá)式零次或多次如:zo*能匹配“z”以及“zoo”,*等價(jià)于0,+匹配前面的子表達(dá)式一次或多次如:zo+能匹配“zo”以及“zoo”,但不能匹配“z”,+等價(jià)于1,?匹配前面的

6、子表達(dá)式零次或一次如:does?可以匹配“do”或“does”中的“doe”,?等價(jià)于0,1n匹配確定的n次,n是一個(gè)非負(fù)整數(shù)如:o2能匹配“food”中的兩個(gè)“oo”n,至少匹配n次,n是一個(gè)非負(fù)整數(shù)如:o2,能匹配“foooood”中的所有“o”,單不能匹配“Tom”中的“o”。o1,等價(jià)于o+n,m最少匹配n次且最多匹配m次,m和n均為非負(fù)整數(shù),其中n=m如:o1,3將匹配“fooooood”中的前三個(gè)“o”。o0,1等價(jià)于o?-10-反義 反義字符“”(脫字符)可以聲明不在字符集指定范圍內(nèi)的字符。示例:.*0-9.java$-11-邏輯或 “|” 表示如果字符串匹配了正則表達(dá)式中字符“

7、|”的左邊或右邊的規(guī)則,則該字符串匹配該正則表達(dá)式。以下正則表達(dá)式匹配兩種固定電話號(hào)碼形式:一種是4位區(qū)位+7位號(hào)碼,另一種是3位區(qū)位+8位號(hào)碼。0d2-d8|0d3-d7-12-分組 使用“(”和“)”把一個(gè)正則表達(dá)式的全部或部分分成一個(gè)或多個(gè)組。分組之后,可以將字符“(”和字符“)”之中的表達(dá)式看成一個(gè)整體來處理。以下正則表達(dá)式匹配出現(xiàn)“java”至少一次的字符串,此處將“java”看成一個(gè)整體來進(jìn)行匹配。(java)+而下述正則表達(dá)式則可以匹配IP(IPV4)地址。(d1,3.)3d1,3 -13-優(yōu)先級(jí) 正則表達(dá)式需遵循操作符或表達(dá)式的優(yōu)先級(jí):相同優(yōu)先級(jí)的從左到右進(jìn)行運(yùn)算,不同優(yōu)先級(jí)的

8、運(yùn)算先高后低。各種操作符的優(yōu)先級(jí)從高到低如下:操作符或表達(dá)式說明轉(zhuǎn)義符(), (?:), (?=), 圓括號(hào)和方括號(hào)*, +, ?, n, n, n,m限定符, $, 元字符位置和順序|“或”操作-14-常用正則表達(dá)式 手機(jī)號(hào)碼驗(yàn)證 :b0?(138d9)|(1589d8)b身份證驗(yàn)證 :d8(0d)|(10-2)(301)|(0-2d)d3$ Email驗(yàn)證 :w+w+(.w+)+-15-應(yīng)用正則表達(dá)式 在Java中使用正則表達(dá)式,需要引入Java的java.util.regex包。java.util.regex包主要由三個(gè)類所組成:Pattern、Matcher和PatternSyntax

9、Exception:Pattern對(duì)象表示一個(gè)已編譯的正則表達(dá)式。Matcher是一個(gè)靠著輸入的字符串來解析這個(gè)模式和完成匹配操作的對(duì)象PatternSyntaxException對(duì)象是一個(gè)未檢查異常,指示正則表達(dá)式中的一個(gè)語法錯(cuò)誤。-16-Pattern類 -1Pattern對(duì)象表示一個(gè)已編譯的正則表達(dá)式。Pattern類沒有提供公共的構(gòu)造方法。要構(gòu)建一個(gè)模式,首先必須調(diào)用公共的靜態(tài)compile()方法,它將返回一個(gè)Pattern對(duì)象。Pattern類的常用方法 方法名功能說明static Pattern compile(String regex)將給定的表達(dá)式regex編譯并賦值給一個(gè)P

10、attern對(duì)象static Pattern compile(String regex , int flags)根據(jù)指定表達(dá)式regex和模式標(biāo)記為flags編譯并賦值給一個(gè)Pattern對(duì)象int falgs()返回當(dāng)前Pattern模式類的flag參數(shù)public Matcher matcher(CharSequence input)使用指定的參數(shù)input生成一個(gè)匹配器Matcher對(duì)象public static Matcher matcher(String regex ,CharSequence input)利用給定的正則表達(dá)式對(duì)input字符串進(jìn)行匹配public String pa

11、ttern()返回該P(yáng)attern對(duì)象所編譯的正則表達(dá)式的字符串形式public String split(CharSequence input)將input按照Pattern里所包含的正則表達(dá)式進(jìn)行分割public String toString()返回該P(yáng)attern的字符串形式-17-Pattern類 -2模式標(biāo)記是可以影響正則表達(dá)式的匹配行為的標(biāo)記參數(shù)模式標(biāo)記通過Pattern類中的靜態(tài)常量定義常用的模式 :常量名功能說明Pattern.CASE_INSENSITIVE匹配字符時(shí)與大小寫無關(guān),該標(biāo)志默認(rèn)只考慮US ASCII字符Pattern.UNICODE_CASE當(dāng)與CASE_IN

12、SENSITIVE結(jié)合時(shí),使用Unicode字母匹配Pattern.MULTILINE啟用多行模式Pattern.CANON_EQ啟用規(guī)范等價(jià)Pattern.DOTALL在dotall模式中,表達(dá)式.匹配多有字符,包括行終結(jié)符,缺省情況下,.表達(dá)式不匹配行終結(jié)符Pattern.UNIX_LINES啟用Unix行模式-18-Matcher類 Matcher類是一個(gè)依靠輸入的字符串來解析這個(gè)模式和完成匹配操作的對(duì)象。調(diào)用Pattern對(duì)象的matcher方法來獲得一個(gè)Matcher對(duì)象。Matcher類的常用方法 :方法名功能說明public Matcher matcher(CharSequenc

13、e input)使用指定的input生成一個(gè)匹配器對(duì)象public int end()返回查找到的字串在目標(biāo)串的最后一個(gè)位置public boolean lookingAt()檢測(cè)目標(biāo)字符串是否以子串開頭public boolean find()查找輸入字串中與該模式匹配的下一個(gè)子字符串public boolean find(int start)從目標(biāo)串的指定位置查找輸入字串中與該模式匹配的下一個(gè)子字符串public boolean matches()判斷整個(gè)字符串是否匹配,如果匹配則返回true,否則返回falsepublic Pattern pattern()返回該匹配器對(duì)象對(duì)應(yīng)的Patt

14、ern對(duì)象public String replaceAll(String replacement)使用給定的字符串來替換目標(biāo)串中與現(xiàn)有pattern模式匹配的全部字串public String replaceFirst(String replacement)使用給定的字符串來替換目標(biāo)串中與現(xiàn)有pattern模式匹配的第一個(gè)字串public Matcher reset()重新設(shè)置匹配器對(duì)象public Matcher reset(CharSequence input)使用新的目標(biāo)串input重新設(shè)置匹配器對(duì)象public int start()返回查找到的字串在目標(biāo)串的開始位置public Ma

15、tcher appendReplacement(StringBuffer sb, String replacement)實(shí)現(xiàn)非結(jié)尾處的增加和替換public StringBuffer appendTail(StringBuffer sb)將最后一次匹配后剩余的字符串添加到一個(gè)StringBuffer對(duì)象中-19-應(yīng)用 基于Java,使用正則表達(dá)式進(jìn)行操作的步驟:構(gòu)造一個(gè)Pattern對(duì)象,如:Pattern pattern = pile(a-z*);構(gòu)造一個(gè)Matcher對(duì)象,如:Matcher matcher = patter.matcher(str);根據(jù)匹配結(jié)果進(jìn)行判斷、替換、查找等操作,如:boolean flag = matcher.mat

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論