JAVA正則表達式匹配符
Java中正則表達式與之前使用的Python是有區別的,區別在於Java對於反斜線()處理的不同。
在Python中"\d"表示 匹配一位數字(0-9),而Java中匹配一位數字(0-9),需要的正則表達式為"\d"。
不過換行符和制表符只需要單反斜線“\n\t”。
字符
| 字符 |
描述 |
| B |
指定字符B |
| \xhh |
十六進制值為oxhh的字符 |
| \uhhhh |
十六進制值為oxhhhh的Unicode字符 |
| \t |
tab |
| \n |
換行 |
| \r |
回車 |
| \e |
轉義 |
字符類
| 字符類 |
描述 |
| . (小數點) |
任意字符 |
| [abc] |
[ ] 中括號,包含a,b,c中任意字符 |
| [^abc] |
[ ]中括號加^, 表示否定,除a,b,c之外的 |
| [a-z] |
從a到z的任意字符 |
| [a-z&&[hi]] |
&&表示交集,即包含h或i |
| \s |
空白字符,包含空格,換行,回車,tab,換頁 |
| \S |
大寫為小寫的取反,非空白字符,等價於[^\s] |
| \d |
數字0-9 |
| \D |
非數字,等價於[^0-9] |
| \w |
詞字符,數字,大小寫字母,等價於[0-9a-zA-Z] |
| \W |
非詞,等價於[^\w] |
邏輯操作符
| 邏輯操作符 |
描述 |
| XY |
Y跟在X后面,並且XY同時滿足 |
| X|Y |
X或者Y |
| (X) |
() 小括號表示捕獲組(group),可以對group進行處理,尤其是獲取其中的內容 |
邊界匹配符
| 邊界匹配符 |
描述 |
| ^ |
一行的開始 |
| $ |
一行的結束 |
| \b |
詞的邊界 |
量詞
量詞描述了一個模式匹配文本的方式,包含
- 貪婪型:量詞默認是貪婪的,發現盡可能多的匹配
- 勉強型:通過問號(?)指定,匹配最小的字符數,也稱為懶惰型,最少匹配,非貪婪。
- 占有型:通過加號(+)指定,當用於字符串時防止匹配失敗時回溯。
| 貪婪型 |
勉強型 |
占有型 |
描述 |
| X? |
X?? |
X?+ |
匹配0個或1個X |
| X* |
X*? |
X*+ |
匹配0個或多個X |
| X+ |
X+? |
X++ |
匹配1個或多個X |
| X{n} |
X{n}? |
X{n}+ |
恰好匹配n個X |
| X{n,} |
X{n,}? |
X{n,}+ |
至少匹配n個X |
| X{n,m} |
X{n,m}? |
X{n,m}+ |
至少匹配n個X,最多匹配m個X |