1. 程式人生 > 其它 >[學習筆記] Java正則表示式

[學習筆記] Java正則表示式

正則表示式

正則表示式定義了字串的模式,可以用於搜尋、編輯或處理文字;

正則表示式使用字串描述規則,並用於匹配字串;

一個正則表示式其實就是一個描述規則的字串,被正則表示式引擎用於匹配文字;

正則表示式是一套規則,可以用於任何語言;

Java提供內建的java.util.regex包用於支援正則表示式;

若正則表示式含有特殊字元,則需要用 \ 對其進行轉義,在Java當中的字串中 \ 要用 \\來表示;

匹配規則

正則表示式按照從左到右的順序進行匹配;

匹配任意字元

在實際應用時,正則表示式用於進行模糊匹配,精確匹配由String.equals()就可以完成;

正則表示式語法

單個字元匹配規則

正則表示式 匹配字元
單個字元,如A 匹配指定字元,如A
\u#### 匹配指定的Unicode字元
. 匹配除\r和\n之外的任意一個字元
\d 匹配任意一個數字,0-9
\w 匹配任意一個字母、數字或下劃線
\s 匹配空格或Tab鍵
\D 匹配非數字
\W 匹配非\w
\S 匹配非空格或Tab鍵(\t)
\f 匹配換頁符
\n 匹配換行符
\r 匹配回車符
\t 匹配垂直製表符

匹配多個字元

正則表示式 匹配字元
A* 匹配任意個數的字元
A+ 至少匹配一個字元
A? 匹配0個或1個字元
A{n} 匹配指定的n個字元
A{m,n} 匹配指定範圍內個數的字元
A{n,} 至少匹配n個字元

複雜的匹配規則

在其他語言中,要在正則表示式中插入一個反斜槓 \, 只需要用 \ 表示即可,而在Java中,需要兩個反斜槓 \\ 才能表示一個反斜槓 \;

根據Java語言規範,Java原始碼的字串中的反斜槓被解釋為Unicode轉義或其他字元轉義,因此必須在字串字面值中使用兩個反斜槓,表示正則表示式受到保護,不被Java編譯器解釋;

正則表示式 匹配字元
\ 用於轉義字元,將下一個字元標記為特殊字元、文字等
^ 用正則表示式進行多行匹配時,^ 表示字串開始的位置
$ 用正則表示式進行多行匹配時, $ 表示字串結束的位置
? 在正則表示式的規則後加上?表示採用非貪婪匹配模式(相比於預設的貪婪匹配模式儘可能長的匹配字串,非貪婪模式會盡可能短的匹配字串)
A|B 用|連線兩個正則表示式,表示A或B
[ABC] 將所有符合條件的字元都列在方括號內組成一個字符集,匹配任何一個在字符集當中的字元,即匹配A或B或C
[^ABC] 將^放在字符集的開頭表示一個反向字符集,即匹配A或B或C以外的字元
[a-z] 由於在字符集當中列出所有要匹配的字元比較麻煩,可以使用字元範圍的形式來對字符集進行簡化
[^a-z] 為了簡化反字符集,也可以使用指定範圍字元

分組匹配

在正則表示式中,可以使用括號(pattern)將子規則括起來表示匹配pattern及其子表示式;

括號還可以用於進行分組匹配,把要匹配的規則用括號進行分組可以方便後續對子字串的提取;