1. 程式人生 > >Java學習之正則表達式

Java學習之正則表達式

反向 反向引用 換行 find() java正則表達式 單個 控制字符 正則 嘗試

  Java正則表達式字符串模式。

  正則表達式可以用來搜索、編輯和處理文本。

  正則表達式不盡限於一種語言,但在每一種語言中又細微的差別。

java.util.regex包中主要有這3個類:

  • Pattern類:

    pattern對象是一個正則表達式的編譯表示。Pattern類沒有公共構造方法。要創建一個Pattern對象,你必須首先調用其公共靜態編譯方法,它返回一個Pattern對象。該方法接受一個正則表達式作為它的第一個參數。

  • Matcher類:

    Matcher對象是對輸入字符串進行解釋和匹配操作的引擎。與Pattern類一樣,Matcher也沒有公共構造方法。你需要調用Pattern對象的matcher方法來獲得一個Matcher對象。

  • PatternSyntaxException:

    PatternSyntaxException是一個非強制異常類,它表示一個正則表達式模式中的語法錯誤。

捕獲組

捕獲組是把多個字符當一個單獨單元進行處理的方法,它通過對括號內的字符分組來創建。

例如,正則表達式(dog) 創建了單一分組,組裏包含"d","o",和"g"。

捕獲組是通過從左至右計算其開括號來編號。例如,在表達式((A)(B(C))),有四個這樣的組:

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

可以通過調用matcher對象的groupCount方法來查看表達式有多少個分組。groupCount方法返回一個int值,表示matcher對象當前有多個捕獲組。

還有一個特殊的組(組0),它總是代表整個表達式。該組不包括在groupCount的返回值中。

技術分享

正則表達式語法:用符號來描述書寫規則: /中間寫正則表達式/ |:代表或者 ():優先級

字符 說明
\

將下一字符標記為特殊字符、文本、反向引用、八進制的轉義符。例如“n”匹配“n”,“\n”匹配換行符

“\t”匹配制表符,“\(”匹配“(”

^ 匹配開頭;/^ve/ 匹配以ve開頭的
$ 匹陪結尾 ;/ve$/ 以ve結尾的
\d 任意一個數字
\D 非數字字符匹配。等效於 [^0-9]。
\w 任意一個數字或字母
\s 任意字符串
{n} 把左邊的表達式重復n遍
{m ,n} 把左邊的表達式重復至少m遍,至多n遍
{m,} 把左邊的表達式重復至少m遍,至多不限
+ 左邊的表達式,至少出現一次,至多不限,相當於{1,}
* 左邊的表達式,至少出現0次,至多不限,相當於{0,}
左邊的表達式,至少出現0次,至多1次,相當於{0,1}
[a,b,c] 只能取方括號中內容之一,[a-z]從a~z之間取任取一個字母,[1-9]從1~9數字中任取一個
. 匹配除"\r\n"之外的任何單個字符
[^xyz] 反向字符集。匹配未包含的任何字符
\b 匹配一個字邊界,即字與空格間的位置。例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"
\B 非字邊界匹配。"er\B"匹配"verb"中的"er",但不匹配"never"中的"er"。
\cx 匹配 x 指示的控制字符。例如,\cM 匹配 Control-M 或回車符。x 的值必須在 A-Z 或 a-z 之間。如果不是這樣,則假定 c 就是"c"字符本身。
\f 換頁符匹配。等效於 \x0c 和 \cL。
\r 匹配一個回車符。等效於 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、換頁符等。與 [ \f\n\r\t\v] 等效。
\S 匹配任何非空白字符。與 [^ \f\n\r\t\v] 等效。
\w 匹配任何字類字符,包括下劃線。與"[A-Za-z0-9_]"等效。
\W 與任何非單詞字符匹配。與"[^A-Za-z0-9_]"等效。
\un 匹配 n,其中 n 是以四位十六進制數表示的 Unicode 字符。例如,\u00A9 匹配版權符號 (?)。

Matcher類的方法

索引方法

索引方法提供了有用的索引值,精確表明輸入字符串中在哪能找到匹配:

序號方法及說明
1 public int start()
返回以前匹配的初始索引。
2 public int start(int group)
返回在以前的匹配操作期間,由給定組所捕獲的子序列的初始索引
3 public int end()
返回最後匹配字符之後的偏移量。
4 public int end(int group)
返回在以前的匹配操作期間,由給定組所捕獲子序列的最後字符之後的偏移量。

技術分享

研究方法

研究方法用來檢查輸入字符串並返回一個布爾值,表示是否找到該模式:

序號方法及說明
1 public boolean lookingAt()
嘗試將從區域開頭開始的輸入序列與該模式匹配。
2 public boolean find()
嘗試查找與該模式匹配的輸入序列的下一個子序列。
3 public boolean find(int start)
重置此匹配器,然後嘗試查找匹配該模式、從指定索引開始的輸入序列的下一個子序列。
4 public boolean matches()
嘗試將整個區域與模式匹配。

技術分享

Java學習之正則表達式