一,定義:符合一點規則的表達式
二,特點:用一些特定的符號來表示一些代碼操作,簡化書寫
三,作用及優缺點:
作用:用於專門操作字符串
優點:可以簡化對字符串的複雜操作
缺點:符號定義越多,正則越長,閱讀性極差
四,具體操作功能:
1. 匹配:String的matches方法
2. 切割:String的split方法
3. 替換:String的replace方法
獲取:示例代碼:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 正則表達式操作:獲取
* @author 小蘇
*
*/
public class Test8 {
public static void main(String[] args) {
String str = "csddddcdcgggcssdfdfvcsd";
String regex = "([a-z])\\1+";
Pattern pa = Pattern.compile(regex);
Matcher ma = pa.matcher(str);
while(ma.find()){
System.out.println(ma.group());
/**
* 結果:
* dddd
* ggg
* ss
*
* */
}
}
}
正則表達式的構造常用摘要
字符類 |
|
[abc] |
a、b 或 c(簡單類) |
[^abc] |
任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] |
a 到 z 或 A 到 Z,兩頭的字母包括在內(範圍) |
[a-d[m-p]] |
a 到 d 或 m 到 p:[a-dm-p](並集) |
[a-z&&[def]] |
d、e 或 f(交集) |
[a-z&&[^bc]] |
a 到 z,除了 b 和 c:[ad-z](減去) |
[a-z&&[^m-p]] |
a 到 z,而非 m 到 p:[a-lq-z](減去) |
預定義字符類 |
|
. |
任何字符(與行結束符可能匹配也可能不匹配) |
\d |
數字:[0-9] |
\D |
非數字: [^0-9] |
\s |
空白字符:[ \t\n\x0B\f\r] |
\S |
非空白字符:[^\s] |
\w |
單詞字符:[a-zA-Z_0-9] |
\W |
非單詞字符:[^\w] |
Greedy 數量詞 |
|
X? |
X,一次或一次也沒有 |
X* |
X,零次或多次 |
X+ |
X,一次或多次 |
X{n} |
X,恰好 n 次 |
X{n,} |
X,至少 n 次 |
X{n,m} |
X,至少 n 次,但是不超過 m 次 |
邊界匹配器 |
|
^ |
行的開頭 |
$ |
行的結尾 |
\b |
單詞邊界 |
\B |
非單詞邊界 |
\A |
輸入的開頭 |
\G |
上一個匹配的結尾 |
\Z |
輸入的結尾,僅用於最後的結束符(如果有的話) |
\z |
輸入的結尾 |
邏輯運算符 |
|
XY |
X 後跟 Y |
X|Y |
X 或 Y |
(X) |
X,作爲捕獲組 |
六,組合捕獲
捕獲組可以通過從左到右計算其開括號來編號。例如,在表達式 ((A)(B(C))) 中,存在四個這樣的組:
1 |
((A)(B(C))) |
2 |
\A |
3 |
(B(C)) |
4 |
(C) |
七,Pattern和Matcher類(示例代碼見四):
Pattern類常用方法:
compile(String regex) (獲取Matcher對象實例)
將給定的正則表達式編譯到模式中。
matches(String regex,
CharSequence input)
編譯給定正則表達式並嘗試將給定輸入與其匹配
Matcher類常用方法:
matches()
嘗試將整個區域與模式匹配。
find()
嘗試查找與該模式匹配的輸入序列的下一個子序列。
group()
返回由以前匹配操作所匹配的輸入子序列。
end()
返回最後匹配字符之後的偏移量。
返回以前匹配的初始索引。