天天看點

正規表達式分割字元串,替換字元串内容

項目中用到字元串分割及替換功能,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
           

繼續閱讀