課件javaee教學第16天正則表達式_第1頁
課件javaee教學第16天正則表達式_第2頁
課件javaee教學第16天正則表達式_第3頁
課件javaee教學第16天正則表達式_第4頁
課件javaee教學第16天正則表達式_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

/blog/static/ 轉:JavaHTML文件中通過查找字符串模式<ahref="...">來定位所有的超。J使用少量的簡單構造(straightforwardconstructs)就已足夠。,^有許多預定以的字符類,像\d(數字)或\p{Sc}(Unicode貨幣符號12-812-9。ava字符。settingsXY可以將量詞(fier)用到表達式中,X+表示X重復1次或多次,X*表示X重復0次或多次,X?X01次reluctantstingy匹配,用以匹配最小的重復數+(possessive或貪婪匹配,用以ab正好與模式的剩余部分匹配。但是貪婪版本[a-z]*+cab匹配,模式的剩ab就匹配失敗(,這樣總體也就匹配失敗。匹配符(thepatternmatcher)返回每個分組的匹配,或者使用\n來回引分組(referbacktoagroupwith\nn是組號(以\1起始)本的構造上已達成了共識,但在細節方面有許多令人“抓狂”的區別(manymaddeningdifferencesAssociates,1997)(剛去第二書店查了一下,東南大學已經引入了其第二版,影印)12-8語 解 字符\unnnn,\xnn,\0n\0nn, 0n代表的字符 0nn代表的字符 八進制0mnn代表的字符 0xnn 0xhhhh\t,\n,\r,\f,\a,\e [C1C2...] C1、C2……中的任何字符。Ci[^. [...&& 志置位,則表示任何字符 ^ 輸入的開頭和結尾(在多行模式(multiline下是行的開頭和結尾 可選的X(X可能出現,也可能不出現 X0 X1X{nX{n,} X重復nnnm 設默認(貪婪)reluctant 設默認(貪婪)possessive XY XY X 與第n 逐字地 PatternJava寫Pattern對象。然后從該模式獲得一Matchermatches()方法:Patternpattern= Matchermatcher=pattern.matcher(input);if(matcher.matches())..12.9預定義的字符類名(PredefinedCharacterClass ASII字符[a- ASCII字符[A- ASCII字母[A-Za- ASCII[0- ASCII字母或數字[A-Za-z0- PrintorGraph 可打印的ASCII字符[\x21-\x7E] ASCII ASCII[\x00 ASCII控制字符[\x00- 空格符或制表符 取決于Character.isUpperCase()的大寫字符 取決于Character.isWhitespace()的空白符 BlockunicodeBasicLatin或Mongolian。塊名列 參考Category或InCategory 這里的Category是Unicode字符的種類名,比如L(字母)或者Sc(貨幣符號。種 名列表參Patternpattern= Pattern.CASE_INSENSITIVE+Pattern.UNICODE_CASE);CASE_INSENSITIVEUSASCII字符。UNICODE_CASECASE_INSENSITIVEUnicode字母匹配UNIX_LINES:當在多行模式下匹配^和$時,只將'\n'看作行終止符DOTALL:當使用此標志時,.符號匹配包括行終止符在內的所有字符CANON_EQ:Unicode字符的規范等價如果正則表達式包含分組,Matcherintstart(intgroupIndex)intend(intgroupIndex)返回某個特殊分組的起始索引和結尾后索引(past-the-endindexStringgroup(intgroupIndex)01groupCount來獲得總的分組11:59am,Matcher對象報告下列分組matcher分組索 起始結束字符00710520233512-9提示輸入一個模式和一個欲匹配的字符串。它將輸出輸入的字符串是否匹配模式。Example12-9.RegexTest.javaimportjava.util.*;importThisprogramtestsregularexpressionmatching.Enterapatternandstringstomatch,orhitCanceltoexit.Ifthepatterncontainsgroups,thegroupboundariesaredisyedinthematch.publicclass{publicstaticvoidmain(String[]{Scannerin=newScanner(System.in);System.out.println("Enterpattern:");StringpatternString=in.nextLine();Patternpattern={pattern }catch(PatternSyntaxException{System.out.println("Patternsyntaxerror");}while{System.out.println("Enterstringtomatch:");Stringinput=in.nextLine();if(input==null||input.equals(""))return;Matchermatcher=pattern.matcher(input);if(matcher.matches()){intg=matcher.groupCount();if(g>0){for(inti=0;i<input.length();{for(intj=1;j<=g;if(i==matcher.start(j))for(intj=1;j<=g;j++)if(i+1==matcher.end(j))}}}System.out.println("No}}}start和end方法找出匹配的范圍。while{intstart=matcher.start();intend=matcher.end();Stringmatch=input.substring(start,..}例12-10用到了這種機制它在一個網頁中定位所有的超文本并打印它們為運行程序,URL,比如javaHrefMatchExample12-10.importimportimportThisprogramdisysallURLsinawebpagematchingaregularexpressionthatdescribes<ahref=...>HTMLtag.StarttheprogramjavaHrefMatchpublicclass{publicstaticvoidmain(String[]{{//getURLstringfromcommandlineoruseStringif(args.length>0)urlString=elseurlString="h //openreaderfor //readcontentsintostringStringBuilderinput=newintwhile((ch=in.read())!=-1)input.append((char)//searchforalloccurrencesofStringpatternString=Patternpattern pile(patternString,Matchermatcher=while{intstart=intend=Stringmatch=input.substring(start,}}catch(IOException{}catch(PatternSyntaxException{}}52.Matcher類的receAll方法用一個替換字符串代替出現的所有正則表達式的匹配。比Patternpattern= Matchermatcher=pattern.matcher(input);Stringoutput=matcher.receAll("#");替換字符串可以包含模式中的分組:$n被第n個分組替換。替換文本中出現$時,receFirst方法只替換模式的第一次出現最后講一點,Patternsplittokenizer。它使用正則表達式匹配作邊界,將輸入分離成字符串數組。比如,下面的指令將輸入分離成記號(nPatternpattern= String[]tokens=pattern.split(input);類java.util.regex.PatternstaticPatterncompile(StringstaticPatterncompile(Stringexpression,intpattern對象用以匹配的快速處理expression 下列標志中的一個或多個CASE_INSENSITIVE,UNICODE_CASE,MULTILINE,UNIX_LINES,DOTALL,andCANON_EQMatchermatcher(CharSequencematcherString[]split(CharSequenceString[]split(CharSequenceinput,intpattern來指定分隔符的形式。返回記號數組。分隔符并不參數inputlimit類java.util.regex.Matcherbooleanbooleanbooleanfind()booleanfind(intstart)參數 intstart()intend()Stringintintstart(intgroupIndex)intend(intgroupIndex),0Stringgroup(int,0StringreceAll(Stringrecement)StringreceFirst(Stringrecement)matcher輸入得到的字符串,但已經用替換表達式替換所有或第一個匹配recement替換字符MatcherMatcherreset(CharSequencematherpostedon2008-04-1615:13閱讀(174)評論 編輯收藏所屬分類:資料查

Java最常用通用的正則表達式收集2011-05-1213:09:08| 分類:正則表達式| 配正則表達式字符串rece 中 //非負整數(正整數+0) //非正整數(負整數+0) // //非負浮點數(正浮點數+// //非正浮點數(+ //由26個英文字母組成的字符串 //由26個英文字母的大寫組成的字符串 //由26個英文字母的小寫組成的字符串"^\[A-Za-z0-9\]+$"http://由數字和26個英文字母組成的字符串"^\w+$"http://由數字、26個英文字母或者下劃線組成的字符串 //地 //&;年-月-/^((0(\[1-9\]{1}))\|(1\[1\|2\]))/((\[0-2\](\[1-9\]{1}))\|(3\[0\|1\]))/(d{2}\|d{4})$/&;&;//月/9\]{1,3})(\]?)$"&;&; 4\]d\|25\[0-5\]).(d{1,2}\|1dd\|2\[0-4\]d\|25\[0-5\])$"&;&;//IP地址\[\一-\龥匹配空行的正則表達式:\n\[\s\|HTML標記的正則表達式:/<(.*)>.*<\/\1>\|<(.*)匹 匹配URL的正則表達式:^\[a-zA-z\]+://(\\w+(-\\w+)*)(\\.(\\w+(-匹配國內:(\d{3}-\|\d{4}-)?(\d{8}\|\d{7})?QQ號:^\[1-9\]*\[1-9\]\[0-9\]*$\字符、或一個后向、或一個八進制轉義符。^匹配輸入字符串的開始位置。如果設置了RegExpMultiline屬性,\^'\r'$匹配輸入字符串的結束位置。如果設置了RegExpMultiline屬性,$'\r'\*+匹配前面的子表達式一次或多次。\+{1,}?匹配前面的子表達式零次或一次。?{0,1}{n}nn{n,}nn{n,m}mnnmnm次。在逗號和兩?(*,n{n,{n,m})后面時,匹配模式是非貪."\n"'\n''\[.\n\]'的(pattern)pattern(?:pattern)匹配pattern但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行供(?=pattern)pattern的字符串開始處匹配查找字符串。這是一個非獲(?\!pattern)負向預查,與(?=pattern)x\|yx或y\[xyz\]\[^xyz\]\[a-z\]\[^a-z\]\b\B\cx匹配由x\d\[0-9\]\D\[^0-9\]\f\x0c\cL\n\x0a\cJ\r

溫馨提示

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

評論

0/150

提交評論