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

本文介绍正则表达式的字符、预定义字符、边界与量词匹配等基础,并通过实例演示如何利用正则表达式进行字符串的分割与替换。
1236

被折叠的 条评论
为什么被折叠?



