java正則表式的使用

概念

正則表達式

在閱讀本文前,你應該已經瞭解了正則表達式的基本概念以及如何書寫正則表達式。若是對正則表達式不是太瞭解,或者想更深刻地瞭解正則表示式,請點擊這裏html

捕獲組

捕獲組可以讓咱們方便地從正則表達式中提取出咱們須要的內容。捕獲組根據字符出現的順序,從左往右開始進行編號。例如正則表達式((A)(B(C))), 其捕獲組分別爲:java

  1. ((A)(B(C)))
  2. (A)
  3. (B(C))
  4. (C)

一個捕獲組一般是用括號包起來的部分,其中整個正則表示式是第一個捕獲組,能夠選擇用括號包起來,也能夠不用括號。除第一個捕獲組以外,其餘捕獲組都需用括號包起來。正則表達式

詳解Java正則表示式的使用

包簡介

java.util.regex包中有一個interface,兩個class和一個exception,分別是code

  • MatchResult
  • Pattern
  • Matcher
  • PatternSyntaxException

其中,MatchResult是interface, Matcher實現了這個interface。Pattern和Matcher是class,Pattern是一個正則表達式經編譯後的表現模式,Matcher是一個狀態機器。htm

Pattern

compile(String regex) / compile(String regex, int flags)

靜態方法,把一個正則表示式編譯後,生成一個Pattern對象實例對象

Patter p = Pattern.compile("\\d{2}");
p.pattern();  //返回 \d{2}

matcher(CharSequence input)

生成一個Matcher對象。Matcher類時不能直接實例化的,能夠經過此方法實例化一個Matcher對象,從而進行各類操做。blog

matches(String regex, CharSequence input)

直接使用正則表達式對輸入的字符串進行匹配,匹配成功則返回true字符串

split(CharSequence input) / split(CharSequence input, int limit)

使用正則表示式,進行字符串分割get

Matcher

find() / find(int start) / lookingAt()/matches()

進行匹配操做,若是匹配成功,這三個方法都會返回true.其中,find()是在源字符串中找出和正則表達式匹配的字符串。find(int start)是從start位置開始尋找下一個匹配的字符串。lookingAt()是從源字符串的第一個字符進行匹配。matches()是對整個源字符串中進行匹配,若是都匹配才返回true。input

String str="abcd23"

Pattern.matches("\\w{4}\d{2}",str); //快捷方式

Pattern p = Pattern.compile("\\w{4}\d{2}");
Matcher m = p.matcher(str); //和上面的方法等價
m.matches();

group() / start() / end()

當使用find() / find(int start) / lookingAt() / matches()進行匹配操做並返回true以後,才能夠執行者三個方法獲取更加詳細的信息。
group():返回匹配到的字符串
start():返回匹配到的字符串在源字符串中的位置
end(): 返回匹配到的字符串的最後一個字符在源字符串中的位置
另外這幾個方法分別有一個重載方法 group(int i) / start(i) / end(i), 分別用於對第i個捕獲組進行對應的操做

replaceAll(String replacement) / replaceFirst(String replacement)

替換源字符串中和正則表達式匹配的子字符串。其中replaceAll是替換全部的,replaceFirst是替換第一個匹配的。

相關文章
相關標籤/搜索