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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論