## 正則表達式
### 次數(shù)匹配
1. **+** : 一次或者多次
2. *:零次或者多次
3. ?:零次或者一次
4. {n,m}:最少 n 次指厌,最多 m 次
5. {n,}:最少n次
6. {,m}:最多m次
### 特殊匹配元素
主要是代表一些特性的元素
1. . :代表除了換行之外的任意字符,例如 `.*` 匹配任意多個字符
2. \d : 代表任何一個數(shù)字,例如匹配一個座機號:`0\d{2}-\d{7}`
3. \w : 匹配字母或數(shù)字或下劃線踊跟,等價于 [A-Za-z0-9_]踩验,不能匹配漢字
4. \D:匹配任意非數(shù)字的字符
5. [ ] : 字符集合,范圍匹配商玫,
? + [0-9] 代表數(shù)字 0-9的任何一個數(shù)字
? + [abc] 代表字母 abc 中的一個字符
? + [a-z] 代表字母 abc...z 中的一個字符
? + [!?] 代表符號 !? 中的一個符號
? + [A-Za-z0-9] 可以把所有字符拼接起來供選擇箕憾,中間不帶空格
### 特殊字符
1. ^ :反義符號;也代表一個字符串的開始
? + [^abcd] : 除了abcd的字符
2. $: 代表一個字符串的結(jié)束
3. | : 分歧條件,相當(dāng)于或者, `\d{2}|\d{3}` 兩個數(shù)字或者三個數(shù)字
4. ( ) : 分組拳昌,把括號里的內(nèi)容當(dāng)做一個整體
5. \ : 轉(zhuǎn)義袭异,對特殊字符需要進行轉(zhuǎn)義,例如匹配 sno*w, 需要正則 `sno\*w`
### 練習(xí)
1. 只包含(中文炬藤,大小寫字符御铃,數(shù)字)的字符串,長度為 1 到 8
? `^[\u4e00-\u9fa5a-zA-Z0-9]{1,8}$`
2. 獲取 Url 中的參數(shù), url = webApp/users/buyerOrders/orderInfo/1803271202gqo6a7tosn7e
? ```
? ? ? private static void test20() {
? ? ? ? ? System.out.println("------------test20()------------------");
? ? ? ? ? // 訂單詳情
? ? ? ? ? String url = "webApp/users/buyerOrders/orderInfo/1803271202gqo6a7tosn7e";
? ? ? ? ? String pattern = "webApp/users/buyerOrders/orderInfo/(.*)";
? ? ? ? ? Pattern pt = Pattern.compile(pattern);
? ? ? ? ? Matcher matcher = pt.matcher(url);
? ? ? ? ? if (matcher.find()) {
? ? ? ? ? ? ? System.out.println("uri:" + matcher.group(1));
? ? ? ? ? }
? ? ? }
? ```