項目中用到字元串分割及替換功能,String中也有想用的分割替換方法,此處采用正規表達式來操作,順便總結下正則字元的說明,僅做技術分享交流,如果您覺得能用到,證明小編時間沒白費,如果您有意見或建議,請留言。
話不多說,進入正題
一、字元說明
1、基礎字元說明
x | 字元x |
\\ | 反斜杠"\" |
\t | 制表符('\u0009') |
\n | 換行符('\u000A') |
\r | 回車符('\u000D') |
[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] |
2、預定義字元說明
. | 任意一個字元 |
\d | 0-9中任意一個數字 |
\D | 任意一個非數字字元 |
\s | 任意一個空格字元: [ \t\n\x0B\f\r] |
\S | 任意一個非空格字元: [^\s] |
\w | 任意一個單詞字元: [a-zA-Z_0-9] |
\W | 任意一個非單詞字元: [^\w] |
3、邊界比對說明
^ | 一行的開始 |
$ | 一行的結束 |
\b | 一個單詞的邊界 |
\B | 非單詞邊界 |
4、量詞比對說明
X? | 字元X,比對0或1次 |
X* | 字元X,比對0或多次 |
X+ | 字元X,比對1或多次 |
X{n} | 字元X,比對n次 |
X{n,} | 字元X,比對至少n次 |
X{n,m} | 字元X,比對至少n次,最多m次 |
5、邏輯運算說明
XY | X後的緊接着是Y |
X|Y | X或者Y |
(X) | X作為一個整體 |
注:使用特殊字元時,使用轉義字元“\”,例如:如果要比對”.” “\”則需寫成“\.” “\\”;
二、使用正規表達式分割字元串及替換字元串内容
1、使用正規表達式分割字元串:
示例代碼:
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
String rex = "1";//分割符
String matchStr = "a1b1c1d1e";//要分割的對象
//擷取屬于rex正則的pattern對象。
Pattern pattern = Pattern.compile(rex);
//按照正則rex指定的規則分割字元串
String[] s = pattern.split(matchStr);
分割後的結果:

2、正規表達式替換字元串中的字元:
示例代碼:
String rex = "(\\{\\})+";
String matchStr = "a{}b{}c{}d{}e";
//擷取屬于rex正則的pattern對象。
Pattern pattern = Pattern.compile(rex);
//建立rex正則用于比對字元串的比對器 -- 同一個pattern可以有多個不同的比對器
Matcher matcher = pattern.matcher(matchStr);
//用-替換{}
while (matcher.find()) {
matchStr = matcher.replaceFirst("-");
matcher = pattern.matcher(matchStr);
System.out.println(matchStr);
}
輸出結果:
a-b{}c{}d{}e
a-b-c{}d{}e
a-b-c-d{}e
a-b-c-d-e