天天看点

正则表达式分割字符串,替换字符串内容

项目中用到字符串分割及替换功能,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
           

继续阅读