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