




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第15章:常用類庫(kù)正則表達(dá)式正則表達(dá)式正則表達(dá)式最早是從UNIX系統(tǒng)的工具組件中發(fā)展而來的,在JDK1.4以前如果需要使用到正則表達(dá)式的相關(guān)定義則需要單獨(dú)引入其它的*.jar文件,而從JDK1.4之后,正則已經(jīng)默認(rèn)被JDK所支持,并且提供有java.util.regex開發(fā)包,同時(shí)針對(duì)于String類也進(jìn)行了一些修改,使其可以有方法直接支持正則處理范例:使用正則表達(dá)式packagecn.mldn.demo;public
classJavaAPIDemo{
public
static
voidmain(String[]args)throwsException{ Stringstr="123"; //字符串對(duì)象
if(str.matches("\\d+")){ //結(jié)構(gòu)匹配
int
num=Integer.parseInt(str); //字符串轉(zhuǎn)為int型數(shù)據(jù) System.out.println(num*2); //數(shù)字計(jì)算 } }}正則標(biāo)記1、字符:匹配單個(gè)字符a:表示匹配字母a;\\:匹配轉(zhuǎn)義字符“\”;\t:匹配轉(zhuǎn)義字符“\t”;\n:匹配轉(zhuǎn)義字符“\n”;2、一組字符:任意匹配里面的一個(gè)單個(gè)字符;[abc]:表示可能是字母a,可能是字母b或者是字母c;[^abc]:表示不是字母a、字母b、字母c的任意一個(gè);[a-zA-Z]:表示全部字母中的任意一個(gè);[0-9]:表示全部數(shù)字的任意一個(gè);3、邊界匹配:在以后編寫JavaScript的時(shí)候使用正則中要使用到;^:表示一組正則的開始;$:表示一組正則的結(jié)束;正則標(biāo)記4、簡(jiǎn)寫表達(dá)式:每一位出現(xiàn)的簡(jiǎn)寫標(biāo)記也只表示一位;.:表示任意的一位字符;\d:表示任意的一位數(shù)字,等價(jià)于“[0-9]”;\D:表示任意的一位非數(shù)字,等價(jià)于“[^0-9]”;\w:表示任意的一位字母、數(shù)字、_,等價(jià)于“[a-zA-Z0-9_]”;\W:表示任意的一位非字母、數(shù)字、_,等價(jià)于“[^a-zA-Z0-9_]”;\s:表示任意的一位空格,例如:\n、\t等;\S:表示任意的一位非空格;5、數(shù)量表示:之前的所有正則都只是表示一位,如果要想表示多位,則就需要數(shù)量表示。正則表達(dá)式?:此正則出現(xiàn)0次或1次;正則表達(dá)式*:此正則出現(xiàn)0次、1次或多次;正則表達(dá)式+:此正則出現(xiàn)1次或多次;正則表達(dá)式{n}:此正則出現(xiàn)正好n次;正則表達(dá)式{n,}:此正則出現(xiàn)n次以上;正則表達(dá)式{n,m}:此正則出現(xiàn)n~m次。6、邏輯表示:與、或、非正則表達(dá)式A正則表達(dá)式B:表達(dá)式A之后緊跟著表達(dá)式B;正則表達(dá)式A|正則表達(dá)式B:表示表達(dá)式A或者是表達(dá)式B,二者任選一個(gè)出現(xiàn);(正則表達(dá)式):將多個(gè)子表達(dá)式合成一個(gè)表示,作為一組出現(xiàn)。String類對(duì)正則的支持No.方法名稱類型描述1publicbooleanmatches(Stringregex)普通與指定正則匹配2publicStringreplaceAll(Stringregex,Stringreplacement)普通替換滿足指定正則的全部?jī)?nèi)容3publicStringreplaceFirst(Stringregex,Stringreplacement)普通替換滿足指定正則的首個(gè)內(nèi)容4publicString[]split(Stringregex)普通按照指定正則全拆分5publicString[]split(Stringregex,intlimit)普通按照指定的正則拆分為指定個(gè)數(shù)范例:實(shí)現(xiàn)字符串替換(刪除掉非字母與數(shù)字)packagecn.mldn.demo;public
classJavaAPIDemo{
public
static
voidmain(String[]args)throwsException{ Stringstr="MLDN&(*@#*(@##@*()Java"; //要替換的原始數(shù)據(jù)
//如果現(xiàn)在由非字母和數(shù)字所組成“[^a-zA-Z0-9]”,數(shù)量在1個(gè)及多個(gè)的時(shí)候進(jìn)行替換 Stringregex="[^a-zA-Z0-9]+";//正則表達(dá)式 System.out.println(str.replaceAll(regex,"")); }}范例:實(shí)現(xiàn)字符串拆分packagecn.mldn.demo;public
classJavaAPIDemo{
public
static
voidmain(String[]args)throwsException{ Stringstr="a1b22c333d4444e55555f666666g";//要操作的數(shù)據(jù) Stringregex="\\d+"; //正則表達(dá)式 Stringresult[]=str.split(regex); //字符串拆分
for(int
x=0;x<result.length;x++){ System.out.print(result[x]+"、"); } }}范例:判斷一個(gè)數(shù)據(jù)是否為小數(shù),如果是小數(shù)則將其變?yōu)閐ouble類型packagecn.mldn.demo;public
classJavaAPIDemo{
public
static
voidmain(String[]args)throwsException{ Stringstr="100.1"; //要判斷的數(shù)據(jù)內(nèi)容 Stringregex="\\d+(\\.\\d+)?"; //正則表達(dá)式
if(str.matches(regex)){ //正則匹配成功
double
num=Double.parseDouble(str);//字符串轉(zhuǎn)double System.out.println(num); //直接輸出 }else{ System.out.println("內(nèi)容不是數(shù)字,無法轉(zhuǎn)型。"); } }}范例:判斷一個(gè)字符串是否由日期所組成,如果是由日期所組成則將其轉(zhuǎn)為Date類型packagecn.mldn.demo;importjava.text.SimpleDateFormat;public
classJavaAPIDemo{
public
static
voidmain(String[]args)throwsException{ Stringstr="1981-20-15"; //要判斷的數(shù)據(jù) Stringregex="\\d{4}-\\d{2}-\\d{2}";//正則表達(dá)式
if(str.matches(regex)){ //格式匹配(無法判斷數(shù)據(jù)) System.out.println(newSimpleDateFormat("yyyy-MM-dd").parse(str)); }else{ System.out.println("內(nèi)容不是日期格式,無法轉(zhuǎn)型。"); } }}范例:判斷電話號(hào)碼格式是否正確在本程序中電話號(hào)碼的內(nèi)容有如下三種類型:電話號(hào)碼類型一(7~8位數(shù)字):51283346(判斷正則:“\\d{7,8}”);電話號(hào)碼類型二(在電話號(hào)碼前追加區(qū)號(hào)):(判斷正則:“(\\d{3,4})?\\d{7,8}”);電話號(hào)碼類型三(區(qū)號(hào)單獨(dú)包裹):(010)-51283346(判斷正則:“((\\d{3,4})|(\\(\\d{3,4}\\)-))?\\d{7,8}”);packagecn.mldn.demo;public
classJavaAPIDemo{
public
static
voidmain(String[]args)throwsException{ Stringstr="(010)-51283346"; //要判斷的數(shù)據(jù) Stringregex="((\\d{3,4})|(\\(\\d{3,4}\\)-))?\\d{7,8}";//正則表達(dá)式 System.out.println(str.matches(regex));//正則匹配 }}范例:驗(yàn)證Email格式現(xiàn)在要求一個(gè)合格的Email地址的組成規(guī)則如下:email的用戶名可以由字母、數(shù)字、_所組成(不應(yīng)該使用“_”開頭);email的域名可以由字母、數(shù)字、_、-所組成;域名的后綴必須是:.cn、、.net、.cn、.gov;packagecn.mldn.demo;publicclassJavaAPIDemo{ publicstaticvoidmain(String[]args)throwsException{ Stringstr=""; //要判斷的數(shù)據(jù) Stringregex="[a-zA-Z0-9]\\w+@\\w+\\.(cn|com||net|gov)"; //正則表達(dá)式 System.out.println(str.matches(regex)); //正則匹配 }}java.util.regex包Pattern類的常用方法:Matcher類的常用方法No.方法類型描述1publicstaticPatterncompile(Stringregex)普通指定正則表達(dá)式規(guī)則2publicMatchermatcher(CharSequenceinput)普通返回Matcher類實(shí)例3publicString[]split(CharSequenceinput)普通字符串拆分No.方法類型描述1publicbooleanmatches()普通執(zhí)行驗(yàn)證2publicStringreplaceAll(Stringreplacement)普通字符串替換3publicbooleanfind()普通是否有下一個(gè)匹配4publicStringgroup?(intgroup)普通獲取指定組編號(hào)的數(shù)據(jù)范例:使用Pattern類實(shí)現(xiàn)字符串拆分packagecn.mldn.demo;importjava.util.regex.Pattern;publicclassJavaAPIDemo{ publicstaticvoidmain(String[]args)throwsException{ Stringstr="mldn()lixinghua$()java&*()#@Python"; //要拆分的字符串 Stringregex="[^a-zA-Z]+"; //正則匹配標(biāo)記 Patternpat=pile(regex); //編譯正則表達(dá)式 Stringresult[]=pat.split(str); //字符串拆分 for(intx=0;x<result.length;x++){ //循環(huán)輸出拆分結(jié)果 System.out.print(result[x]+"、"); } }}范例:使用Matcher類實(shí)現(xiàn)正則驗(yàn)證packagecn.mldn.demo;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassJavaAPIDemo{ publicstaticvoidmain(String[]args)throwsException{ Stringstr="101";//要匹配的字符串 Stringregex="\\d+"; //正則匹配標(biāo)記 Patternpat=pile(regex); //編譯正則表達(dá)式 Matchermat=pat.matcher(str); //獲取Matcher類實(shí)例 System.out.println(mat.matches()); //正則匹配 }}范例:使用Matcher類實(shí)現(xiàn)字符串替換packagecn.mldn.demo;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassJavaAPIDemo{ publicstaticvoidmain(String[]args)throwsException{ Stringstr="MLDN&(*@#*(@##@*()Java"; //要替換的原始數(shù)據(jù) Stringregex="[^a-zA-Z0-9]+"; //正則表達(dá)式 Patternpat=pile(regex); //編譯正則表達(dá)式 Matchermat=pat.matcher(str); //獲取Matcher類實(shí)例 System.out.print
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 細(xì)胞研發(fā)面試題及答案
- 公務(wù)員省考資料分析與解讀試題及答案
- 案場(chǎng)形體培訓(xùn)
- 一年級(jí)語(yǔ)文學(xué)科評(píng)估試題及答案
- 2024年寵物營(yíng)養(yǎng)多樣性與均衡知識(shí)試題及答案
- 計(jì)算機(jī)基礎(chǔ)復(fù)習(xí)時(shí)間管理技巧及試題和答案
- 智界貨車測(cè)試題及答案
- 2024汽車維修工考試過程中常見問題應(yīng)對(duì)試題及答案
- 經(jīng)典java面試題及答案解析
- 2024年計(jì)算機(jī)基礎(chǔ)考試復(fù)習(xí)技術(shù)建議試題及答案
- 初中數(shù)學(xué)北師大八年級(jí)下冊(cè)綜合與實(shí)踐-生活中的一次模型PPT
- 煤化工概述-課件
- 2021初中生命科學(xué)學(xué)業(yè)考試參考答案
- 《作文吹泡泡》-完整版課件
- 康熙帝課件(模板)
- DG-TJ 08-2002-2020 懸挑式腳手架安全技術(shù)標(biāo)準(zhǔn) 高質(zhì)量清晰版
- 石化裝置及產(chǎn)品英文名稱及縮略詞
- 淺談在小學(xué)五六年級(jí)開展性教育的必要性
- (完整版)二十四山年月日時(shí)吉兇定局詳解,
- 降落傘拉直階段軌跡及拉直力計(jì)算
- 支撐掩護(hù)式液壓支架總體方案及底座設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論