問題:你如何將元字符轉成普通字符一樣?
答:有兩種方法:
- 用反斜槓(
\
)前面的元字符; - 將元字符括在引號表達式中
\Q
(在開頭)和\E
(在結尾處)Pattern.quote("表達式") 將輸入序列中的元字符或轉義序列轉義成普通字符 如:Pattern.quote(".*+foo"); //返回 \Q.*+foo\E
貪婪 |
懶惰 |
獨佔 |
X? |
X?? |
X?+ |
X* |
X*? |
X*+ |
X+ |
X+? |
X++ |
X{n} |
X{n}? |
X{n}+ |
X{n,} |
X{n,}? |
X{n,}+ |
X{n,m} |
X{n,m}? |
X{n,m}+ |
?/*/+只修飾一個字符時 根據前導字符去匹配儘可能多的內容 貪婪,匹配多的,匹配不上了就回溯 |
(對兩個或以上的字符後添加)? 匹配最少項 記憶 :問號,對於有沒有不知道 所以是0/1 ,有沒有都行不就是懶惰嗎 |
(對兩個或以上的字符後添加)+ 與貪婪類似,區別就是不回溯,會導致“獨佔失敗”,沒有匹配上 記憶: “+ 表示必須有一 “即獨佔 |
? +
0 ————> 1——————————————————>
^ 開始 * $ 結束
0————————————————————————>
匹配次數 | 正則表達 |
=n | {n} |
>=n | {n,} |
[n,m] | {n,m} |
括號 |
(pattern) 匹配並捕獲 |
(?:pattern) | 匹配 pattern 但不捕獲該匹配的子表達式 |