日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java正則表達(dá)式API詳解

瀏覽:24日期:2022-09-05 15:35:46

Java中正則表達(dá)式相關(guān)的類都在java.util.regex之內(nèi),一般來說,主要用到的是這兩個類:java.util.regex.Pattern和java.util.regex.Matcher。Pattern對應(yīng)正則表達(dá)式,一個Pattern與一個String對象關(guān)聯(lián),生成一個Matcher,它對應(yīng)Pattern在String中的一次匹配; 調(diào)用Matcher對象的find()方法,Matcher對象就會更新為下一次匹配的匹配信息。示例:

Pattern pattern = Pattern.compile('d{4}-d{2}-]]d{2}');String string = '2010-12-20 2011-02-14';Matcher matcher = pattern.matcher(string);while(matcher.find()) { System.out.println(matcher.group(0));}

Pattern

Pattern是Java語言中的正則表達(dá)式對象。要使用正則表達(dá)式,首先必須從字符串“編譯”出Pattern對象,這需要用到Pattern.compile(String regex)方法。

Pattern pattern = Pattern.compile('a.b+');

如果要指定匹配模式,可以在表達(dá)式中使用(?modifier)修飾符指定,也可以使用預(yù)定義常量。下面的兩個Pattern對象的生成方法不同,結(jié)果卻是等價的。

Pattern pattern = Pattern.compile('(?i)a.b+');Pattern pattern = Pattern.compile('a.b+',Pattern.CASE_INSENSITIVE);

如果要同時指定多種模式,可以連寫模式修飾符,也可以直接用|運算符將預(yù)定義常量連接起來,以下兩個Pattern對象也是等價的。

Pattern pattern = Pattern.compile('(?is)a.b+');Pattern pattern = Pattern.compile('a.b+',Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

下面介紹Pattern的主要成員方法:

1. static boolean matches(String regex.CharSequence input)

這個方法可以檢驗字符串input能否由正則表達(dá)式regex匹配,因為是靜態(tài)方法,所以不需要編譯生成各個對象,方便隨手使用。要注意的是,它檢驗的是“整個字符串能否由表達(dá)式匹配”,而不是“表達(dá)式能否在字符串中找到匹配”。你可以認(rèn)為regex的首尾自動加上了匹配字符串起始和結(jié)束位置的錨點 A和z 。

Pattern.matches('d{6}','a123456'); //falsePattern.matches('d{6}','123456'); //true

2. String[] split(CharSequence text)

通常,Pattern對象需要配合下面將要介紹的Matcher一起完成正則操作。如果只用正則表達(dá)式來切分字符串,只用Pattern的這個方法也可以。

這個方法接收的參數(shù)類型是CharSequence它可能有點陌生,其實它是String的父類,其他子類還有CharBuffer,StringBuffer,StringBuilder,因而可以應(yīng)對常見的各種表示“字符串”的類。下面的代碼僅以String為例:

String s = '2010-12-20';Pattern pattern = Pattern.compile('s+');for(String part : pattern.split(s)){ System.out.println(part);}

3. String[] split(CharSequence text,int limit)

這個方法與上面的方法很相似,只是多了一個參數(shù)limit,它用來限定返回的String數(shù)組的最大長度。也就是說,它規(guī)定了字符串至多只能“切”limit-1次。如果不需要對字符串比較大,進(jìn)行盡可能多的切分,使用這個方法。

String s = ' 2010-12-20 ';Pattern pattern = Pattern.compile('s+');for(String part : Pattern.split(s,2)){ System.out.println(part);}

既然limit是一個int類型,那么它自然可以設(shè)定為各種值,下表總結(jié)了limit在各個取值區(qū)間對結(jié)果的影響(未指定limit時,最終返回包含n個元素的數(shù)組,實際能切分的次數(shù)是 n-1 ):

取值 結(jié)果limit < 0等于未設(shè)定limit時,保留末尾的空字符串limit = 0 等于未設(shè)定limit時,切分n-1次,忽略末尾的空字符串0 < limit < n返回數(shù)組包含limit個元素,切分limit-1次,最后一個元素是第limit-1次切分后,右側(cè)剩下的所有文本limit >= n等于未指定limit時

4. static String quote(String text)

這個方法用來取消字符串text中所有轉(zhuǎn)義字符的特殊含義,實質(zhì)就是在字符串首尾添加 Q 和 E。通常,如果需要把某個字符串作為沒有任何特殊意義的正則表達(dá)式(比如從外界讀入的字符串,用在某個復(fù)雜的正則表達(dá)式中),就可以使用這個方法:

'aacb'.matches('a*.b'); //true'a*.b'.matches('a*.b'); //false'a*.b'.matches('a*.b'); //false'a*.b'.matches(Pattern.quote('a*.b'));//true

Matcher

Matcher可以理解為“某次具體匹配的結(jié)果對象”:把編譯好的Pattern對象“應(yīng)用”到某個String對象上,就獲得了作為“本次匹配結(jié)果”的Matcher對象。之后,就可以通過它獲得關(guān)于匹配的信息。

Pattern pattern = Pattern.compile('d{4}-d{2}-d{2}');Matcher matcher = pattern.matcher('2010-12-20 2011-02-14');while(matcher.find()){ System.out.println(matcher.group());}

對編譯好的Pattern對象調(diào)用matcher(String text)方法,傳入要匹配的字符串text,就得到了Matcher對象,每次調(diào)用一次find()方法,如果返回true,就表示“找到一個匹配”,此時可以通過下面的若干方法獲得關(guān)于本次匹配的信息。

1. String group(int n)

返回當(dāng)前匹配中第n對捕獲括號捕獲的文本,如果n為0,則取匹配的全部內(nèi)容;如果n小于0或者大于最大分組編號數(shù),則報錯。

2. String group()

返回當(dāng)前匹配的全部文本,相當(dāng)于group(0)。

3. int groupCount()

返回此Matcher對應(yīng)Pattern對象中包含的捕獲分組數(shù)目,編號為0的默認(rèn)分組不計在內(nèi)。

4. int start(n)

返回當(dāng)前匹配中第n對捕獲括號匹配的文本在原字符串中的起始位置。

5. int start()

返回當(dāng)前匹配的文本在原字符串中的起始位置,相當(dāng)于start(0)。

6. int end(n)

返回當(dāng)前匹配中第n對捕獲括號匹配的文本在原字符串中的結(jié)束位置。

7. int end()

返回當(dāng)前匹配的文本在原字符串中的結(jié)果位置,相當(dāng)于end(0)。

8. String replaceAll(String replacement)

如果進(jìn)行正則表達(dá)式替換,一般用到的是Matcher的replaceAll()方法,它會將原有文本中正則表達(dá)式能匹配的所有文本替換為replaceement字符串。

String

許多時候只需要臨時使用某個正則表達(dá)式,而不需要重復(fù)使用,這時候每次都生成Pattern對象和Matcher對象再操作顯得很煩瑣。所以,Java的String類提供了正則表達(dá)式操作的靜態(tài)成員方法,只需要String對象就可以執(zhí)行正則表達(dá)式操作。

1. boolean matches(String regex)

這個方法判斷當(dāng)前的string對象能否由正則表達(dá)式regex匹配。請注意,這里的“匹配”指的并不是regex能否在String內(nèi)找到匹配,而是指regex匹配整個String對象,因此非常適合用來做數(shù)據(jù)校驗。

'123456'.matches('d{6}'); //true'a123456'.matches('d{6}'); //true

2. String replaceFirst(String regex,String replacement)

這個方法用來替換正則表達(dá)式regex在字符串中第一次能匹配的文本,可以在replacement字符串中用$num引用regex中對應(yīng)捕獲分組匹配的文本。

'2010-12-20 2011-02-14'.replaceFirst('(d{4})-(d{2})-(d{2})','$2/$3/$1');

3. String replaceAll(String regex,String replacement)

這個方法用來進(jìn)行所有的替換,它的結(jié)果等同于Matcher類的replaceAll()方法,replacement字符串中也可以用$num的表示法引用regex中對應(yīng)捕獲分組匹配的文本。

'2010-12-20 2011-02-14'.replaceAll('(d{4})-(d{2})-(d{2})','$2/$3/$1');

4. String[] split(String regex)

這個方法等價于Pattern中對應(yīng)的split()方法,此處不再贅述。

5. String[] split(String regex,int limit)

這個方法等價于Pattern中對應(yīng)的split()方法,此處不再贅述。來自:http://my.oschina.net/fhd/blog/370833

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品theporn| 亚洲二区视频| 亚洲一区欧美激情| 91精品国产福利在线观看麻豆| 麻豆国产精品777777在线| 久久国产尿小便嘘嘘| 日韩不卡一区二区| 清纯唯美亚洲综合一区| 日韩高清三区| 日韩毛片网站| 久久精品99国产精品日本| 日日摸夜夜添夜夜添国产精品| 视频一区二区中文字幕| 视频一区国产视频| 亚洲国产日韩欧美在线| 亚洲福利专区| 国产一区导航| 蜜桃av一区二区三区电影| 综合精品一区| 日韩av不卡一区二区| 欧美亚洲二区| 免费在线成人| 中文字幕在线视频网站| 色婷婷久久久| 在线 亚洲欧美在线综合一区| 视频一区视频二区中文字幕| 亚洲91网站| 国产精品伊人| 精品久久影院| 激情黄产视频在线免费观看| 日韩免费一区| 午夜欧美精品| 亚洲精品一二三**| 国产美女久久| 97精品97| 午夜久久免费观看| 免费看黄色91| 欧美日韩一区二区三区不卡视频| 老司机精品视频网| 国产精品久久久久av电视剧| 黄色日韩在线| 日韩精品久久久久久久软件91| 狂野欧美性猛交xxxx| 国产99在线| 群体交乱之放荡娇妻一区二区| 好吊日精品视频| 少妇精品久久久一区二区三区| 老色鬼精品视频在线观看播放| 三级精品视频| 首页国产欧美日韩丝袜| 免费一级欧美在线观看视频| 日韩在线不卡| 美女国产精品| 国产精品nxnn| 999精品色在线播放| 男人操女人的视频在线观看欧美| 国产精品videossex| 久久久精品五月天| 亚洲专区视频| 久久三级毛片| 狠狠色狠狠色综合日日tαg| 欧美啪啪一区| 婷婷综合在线| 麻豆精品蜜桃视频网站| 国产字幕视频一区二区| 日韩在线视频一区二区三区| 精品亚洲精品| 一区二区视频欧美| 国产精选久久| 亚洲激情中文在线| 国产极品一区| 免费黄色成人| 国产精品一卡| 亚洲韩日在线| 青青草国产成人99久久| 日本欧美不卡| 日韩国产91| 久久精品电影| 欧美精品影院| 蜜桃视频欧美| 激情综合五月| 亚洲精品四区| 99成人超碰| 国产精品欧美三级在线观看 | 欧美日韩国产探花| 国产精品嫩模av在线| 亚洲免费影院| 黄在线观看免费网站ktv| 中文字幕亚洲精品乱码| 久久国产免费| 狠狠久久伊人| 国产一卡不卡| 玖玖精品视频| 日韩精品麻豆| 久久久久久婷| 国产日韩欧美三级| 蜜臀av亚洲一区中文字幕| 欧美亚洲在线日韩| 9999国产精品| 欧美xxxx性| 91精品国产自产观看在线 | 亚洲欧美伊人| 国产精品精品国产一区二区| 国产精品久久久亚洲一区| 亚洲永久精品唐人导航网址| 黑丝一区二区| 欧美日韩中文| 蜜臀久久99精品久久久久宅男| 国产精品探花在线观看| 丝袜美腿亚洲一区| 秋霞影视一区二区三区| 国产激情久久| 国产视频一区二区在线播放| 久久成人精品| av亚洲一区二区三区| 国产精品免费大片| 丝袜美腿亚洲色图| 日韩.com| 国产精品久一| 国产精品宾馆| 亚洲欧美久久精品| 亚洲激情久久| 国产亚洲一区二区手机在线观看| 国产精品**亚洲精品| 亚洲精品三级| 综合激情一区| 在线一区免费| 亚洲永久av| 免费在线亚洲| 日本不卡的三区四区五区| 伊人成人在线视频| av一区二区高清| 午夜影院一区| 美女精品久久| 国产精品宾馆| 国产午夜精品一区在线观看| 综合视频一区| 蜜臀va亚洲va欧美va天堂| 午夜日韩福利| 天堂网在线观看国产精品| 欧美好骚综合网| 欧美黄页在线免费观看| 免费高清在线一区| 日韩av一区二区在线影视| 性欧美长视频| 99国内精品| 国产模特精品视频久久久久| 99久久精品费精品国产| 精品久久久网| 国产另类在线| 国产精品欧美大片| 国产精久久一区二区| 欧美韩一区二区| 久久99精品久久久久久园产越南 | 日韩精品欧美大片| 国产欧美88| 国产伦精品一区二区三区视频| 99视频在线精品国自产拍免费观看| 欧美精品激情| 亚洲一区日韩| 亚洲自拍另类| 日本不卡一二三区黄网| 亚洲精品欧美| 97久久亚洲| 日韩福利视频一区| 91精品国产自产在线丝袜啪| 欧美日韩中出| 伊人久久国产| 久久久久一区| 波多野结衣一区| 日韩视频精品在线观看| 亚洲国产一区二区三区在线播放| 久久激情中文| 午夜久久久久| 久久狠狠久久| 精品久久久久久久| 日韩久久电影| 亚洲精品中文字幕乱码| 久久香蕉精品| 欧美激情视频一区二区三区免费| 精品黄色一级片| 中文字幕在线看片| 欧美午夜不卡| 日韩av网站在线免费观看| 国产精品va| 香蕉精品视频在线观看| 男人的天堂久久精品| 亚洲精品高潮| 麻豆久久一区| 国产真实久久| 亚洲欧美视频一区二区三区| 国产精品美女久久久久久不卡| 国产在线不卡一区二区三区| 久久蜜桃精品| 中文字幕日韩高清在线| 国产精品啊啊啊| 特黄特色欧美大片| 国产精品亚洲片在线播放| 欧美国产小视频| 久久亚洲视频|