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

您的位置:首頁技術文章
文章詳情頁

Java正則表達式API詳解

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

Java中正則表達式相關的類都在java.util.regex之內,一般來說,主要用到的是這兩個類:java.util.regex.Pattern和java.util.regex.Matcher。Pattern對應正則表達式,一個Pattern與一個String對象關聯,生成一個Matcher,它對應Pattern在String中的一次匹配; 調用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語言中的正則表達式對象。要使用正則表達式,首先必須從字符串“編譯”出Pattern對象,這需要用到Pattern.compile(String regex)方法。

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

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

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

如果要同時指定多種模式,可以連寫模式修飾符,也可以直接用|運算符將預定義常量連接起來,以下兩個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能否由正則表達式regex匹配,因為是靜態方法,所以不需要編譯生成各個對象,方便隨手使用。要注意的是,它檢驗的是“整個字符串能否由表達式匹配”,而不是“表達式能否在字符串中找到匹配”。你可以認為regex的首尾自動加上了匹配字符串起始和結束位置的錨點 A和z 。

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

2. String[] split(CharSequence text)

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

這個方法接收的參數類型是CharSequence它可能有點陌生,其實它是String的父類,其他子類還有CharBuffer,StringBuffer,StringBuilder,因而可以應對常見的各種表示“字符串”的類。下面的代碼僅以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)

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

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

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

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

4. static String quote(String text)

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

'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可以理解為“某次具體匹配的結果對象”:把編譯好的Pattern對象“應用”到某個String對象上,就獲得了作為“本次匹配結果”的Matcher對象。之后,就可以通過它獲得關于匹配的信息。

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對象調用matcher(String text)方法,傳入要匹配的字符串text,就得到了Matcher對象,每次調用一次find()方法,如果返回true,就表示“找到一個匹配”,此時可以通過下面的若干方法獲得關于本次匹配的信息。

1. String group(int n)

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

2. String group()

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

3. int groupCount()

返回此Matcher對應Pattern對象中包含的捕獲分組數目,編號為0的默認分組不計在內。

4. int start(n)

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

5. int start()

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

6. int end(n)

返回當前匹配中第n對捕獲括號匹配的文本在原字符串中的結束位置。

7. int end()

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

8. String replaceAll(String replacement)

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

String

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

1. boolean matches(String regex)

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

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

2. String replaceFirst(String regex,String replacement)

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

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

3. String replaceAll(String regex,String replacement)

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

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

4. String[] split(String regex)

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

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

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

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品sss在线观看av| 精品一区二区三区中文字幕| 久久国产欧美| 日韩中文首页| 国产综合精品| 玖玖玖国产精品| 天堂久久av| 国产精品一区二区av日韩在线| 免费在线亚洲欧美| 色婷婷亚洲mv天堂mv在影片| 久久精品青草| 久久福利精品| 欧美三区不卡| 国产欧美成人| 精品国产免费人成网站| 美女网站一区| 日韩欧美久久| 精品在线网站观看| 日韩欧美精品综合| av不卡在线看| 日韩av成人高清| 免费在线播放第一区高清av| 国产精品字幕| 中文视频一区| 国产精品久久久久77777丨| 高清日韩中文字幕| 激情久久五月| 国产精品17p| 欧美日韩国产传媒| 久久精品亚洲一区二区| 亚洲图片久久| 亚洲调教视频在线观看| 欧美午夜精彩| 91av亚洲| 亚洲精品系列| 精品视频国产| 亚洲黄色在线| 麻豆精品在线视频| 黄色成人精品网站| 国产精品久久国产愉拍| 亚洲成av人片一区二区密柚| 视频一区视频二区中文字幕| 麻豆成人av在线| 女人av一区| 国产欧美日韩精品一区二区三区| 色婷婷精品视频| 日本v片在线高清不卡在线观看| 麻豆精品新av中文字幕| 日韩黄色av| 欧美激情麻豆| 亚洲精品自拍| 亚洲一区二区网站| 久久婷婷亚洲| 国产精品毛片一区二区在线看| 欧美精品福利| 国产精东传媒成人av电影| 免费一级欧美在线观看视频 | 国产亚洲观看| 99久久久久| 六月丁香综合在线视频| 日本午夜精品久久久| 中文精品电影| 亚洲欧美日韩国产一区| 天堂资源在线亚洲| 欧美精品91| 黄色在线一区| 久草免费在线视频| 欧美欧美黄在线二区| 亚洲成人二区| 麻豆一区二区99久久久久| 久久av在线| 欧美日韩尤物久久| 国产精品扒开腿做爽爽爽软件| 国产精品腿扒开做爽爽爽挤奶网站| 色一区二区三区四区| 青青草91久久久久久久久| 亚洲一区二区免费看| 亚洲www啪成人一区二区| 国产精品免费精品自在线观看| 国产精品老牛| 久久国产亚洲| 黄色aa久久| 免费在线日韩av| 日韩av不卡一区二区| 亚洲欧美久久久| 国产综合婷婷| 日韩欧美二区| 9999国产精品| 欧美黄页在线免费观看| 亚洲精品伊人| 美女精品在线| 午夜欧美视频| 欧美综合另类| 91精品精品| 久久久噜噜噜| 日本国产精品| 韩国精品主播一区二区在线观看 | 久久久久91| 日韩高清三区| 亚洲特级毛片| 蘑菇福利视频一区播放| 日韩中文字幕视频网| 国产亚洲一卡2卡3卡4卡新区| 国产精品任我爽爆在线播放 | 999国产精品| 精品国产亚洲日本| 国产精品蜜月aⅴ在线| 色综合视频一区二区三区日韩 | 国产日韩欧美高清免费| 日韩黄色在线观看| 91精品国产一区二区在线观看| 综合激情在线| 日韩中文av| 欧美日韩1区2区3区| 国产乱子精品一区二区在线观看| 国产精品99视频| 日韩久久精品网| 激情欧美国产欧美| 在线日韩一区| 精品日韩毛片| 亚洲深夜影院| 欧美aⅴ一区二区三区视频| 麻豆91精品91久久久的内涵| 欧美激情日韩| 98精品视频| 久久在线视频免费观看| 欧美网站在线| 欧美综合二区| 日韩精品视频中文字幕| 涩涩涩久久久成人精品| 欧美日韩网址| 国内揄拍国内精品久久| 涩涩av在线| 999国产精品视频| 亚洲大全视频| 免费观看在线综合色| 日韩高清二区| 欧美黄色精品| 日韩不卡视频在线观看| 伊人久久亚洲热| 视频精品一区| 久久不见久久见免费视频7| 国产精品99一区二区三| 亚洲午夜视频| 免费一区二区视频| 亚洲毛片在线| 久久久91麻豆精品国产一区| 日韩精品第一区| 亚洲调教视频在线观看| 亚洲免费影视| 国产日韩视频| 欧美sm一区| 欧美专区18| 国产精品久久久亚洲一区| av综合电影网站| 视频一区中文字幕| 国产精品亚洲一区二区在线观看| 国产成人免费| 狠狠色综合网| 欧美永久精品| 午夜av成人| 免费久久99精品国产| 国产精品久久久久久久久久久久久久久 | 蜜桃一区二区三区在线| 亚洲精品美女91| 成人午夜毛片| 亚洲在线网站| 国产精品久久亚洲不卡| 亚洲香蕉网站| 久久国内精品| 欧美成人精品| 国产精品入口久久| 播放一区二区| 香蕉久久一区| 一本大道色婷婷在线| 亚洲精品自拍| 丝袜诱惑一区二区| 亚洲一级大片| 国产精品99在线观看| 一本综合精品| 亚洲一区资源| 日韩美女精品| 久久国产免费| 国产精品xxx| 亚洲免费婷婷| www在线观看黄色| 亚洲另类黄色| 精品久久99| 免费的成人av| 伊人久久在线| 欧美日一区二区在线观看| 亚洲v在线看| 欧美国产日本| 亚洲一区二区av| 一本大道色婷婷在线| 国产三级一区| 中文一区二区| 欧产日产国产精品视频| 国产乱人伦丫前精品视频 | 国产精品18|