對於一些簡單的字符串,直接用String方法就能處理,可是對於複雜的,String方法就力不從心了,這時候正則表達式纔是解決之道!正則表達式
一:正則表達式匹配規則spa
字符 | |
B | 指定字符B |
\xhh | 十六進制值爲oxhh的字符 |
\uhhhh | 十六進制表示爲oxhhh的Unicode字符 |
\t | 製表符Tab |
\n | 換行符 |
\r | 回車 |
\f | 換頁 |
\e | 轉義(Escape) |
字符類 | |
. | 任意字符 |
[abc] | 包含a、b和c的任何字符(和a|b|c做用相同) |
[^abc] | 除了a、b和c以外的任何字符(否認) |
[a-zA-Z] | 從a到z或從A到Z的任何字符(範圍) |
[abc[hij]] | 任意a、b、c、h、i和j字符(與a|b|c|h|i|j做用相同)(合併) |
[a-z&&[hij]] | 任意h、i或j(交集) |
\s | 空白符(空格、Tab、換行、換頁和回車) |
\S | 非空白符([^\s]) |
\d | 數字[0-9] |
\D | 非數字[^0-9] |
\w | 詞字符[a-zA-Z0-9] |
\W | 非詞字符[^\w] |
邏輯操做符 | |
XY | Y跟在X後面 |
X|Y | X或Y |
(X) | 捕獲組(capturing group)。能夠在表達式中用\i引用第i個捕獲組 |
邊界匹配符 | |
^ | 一行的起始 |
$ | 一行的結束 |
\b | 詞的邊界 |
\B | 非詞的邊界 |
\G | 前一個匹配的結束 |
量詞code
量詞描述了一個模式吸取輸入文本的方式:ci
貪婪型:量詞老是貪婪的,除非有其餘的選項被設置。貪婪表達式會爲全部可能的模式發現儘量多的匹配。致使此問題的一個典型理由就是假定咱們的模式僅能匹配第一個可能的字符組,若是它是貪婪的,那麼它就會繼續往下匹配。字符串
勉強型:用問號來指定,這個量詞匹配知足模式所需的最少字符數。所以也稱作懶惰的、最少匹配的、非貪婪的、或不貪婪的。table
佔有型:目前,這種類型的量詞只有Java語言中才可用。當正則表達式被應用於字符串時,它會產生至關多的狀態,以便在匹配失敗時能夠回溯。而「佔有的」量詞並不保存這些中間狀態,所以它們能夠防止回溯。它們經常用於防止正則表達式失控,所以可使正則表達式執行起來更有效。引用
貪婪型 | 勉強型 | 佔有型 | 如何匹配 |
X? | X?? | X?+ | 一個或零個X |
X* | X*? | X*+ | 零個或多個X |
X+ | X+? | X++ | 一個或多個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}+ | X至少n次,且不超過m次 |
須要注意的時在書寫表達式X的時候,要用()括起來:例如X=abc X?應該表示爲 (abc)?方法