Java回炉之正则表达式
最常用
.
表示任意一个字符\s
空白字符(空格回车)\S
非空白字符(相当于[^\S]
)\d
一个数字(相当于[0-9]
)\D
一个非数字字符(相当于[^0-9]
)\w
一个单词字符(相当于[a-zA-Z_0-9]
,即字母数字下划线)\W
一个非单词字符(相当于[^\w]
)\b
单词边界\B
一个非单词边界[]
匹配括号内一个字符*
重复0次或多次+
重复1次或多次
语法规则
转义字符
\
表示转移,其后的带含义字符将被视为普通字符。
\.
表示.
\+
表示+
字符匹配
.
匹配:单个字符;取值:任意字符。
a.b
可以匹配adb、a#b等[]
匹配:单个字符;取值:中括号内字符。
a[bcd]e
可以匹配abe、ace、ade。|
匹配:一组字符;取值:小括号内某一组字符。
a(1|23|2333)b
可以匹配a1b、a23ba、2333b。^
匹配单词开头$
匹配单词结束\b
匹配单词边界(单词间的部分)
特殊字符匹配
\s
表示一个空白符号,包括空格、制表符、回车、换页。作用同[\t\n\r\f]
\S
表示不能是空白符号。作用同[^\t\n\r\f]
\d
表示一个数字。作用同[0-9]
。\D
表示此处不能是数字,作用同[^\d]
\w
表示数字或字母。作用同[0-9A-Za-z_]
\W
表示不能是数字或字母,作用同[^\w]
循环次数匹配
*
表示0次或多次
ab*
可以匹配a、ab、abbbbb等。+
表示1次或多次
ab+
可以匹配ab、abb、abbbb等。?
表示0次或1次
ab?
可以匹配a、ab。{n}
表示n次
ab{2}表示abb。{n,m}
表示n到m次。
ab{2,5}表示abb、abbb、abbbb、
取值控制
-
匹配:单个字符;取值:-
左至右
a[0-9]
可以表示a0、a1……a9。[^]
不能匹配一个字符
[^ab]
表示不以a或b开头
常用正则表达式
(自己百度去吧)
Java中的使用
匹配判断
boolean isMatch=string.matches("regex");
分割字符串
String string = "ab|cd|efg";
String divide = "|";
String[] strArray=string.split(divide);
//{"ab","cd","efg"}
字符串替换
String string = "ab45436cd54efg"
String regex="\\d+";
string.replaceAll(regex,"_");
//"ab_cd_efg"
使用Pattern和Matcher
使用正则字符串创建Pattern
Pattern pattern=Pattern.compile("\\d");
使用目标字符串创建Matcher
Matcher matcher=pattern.matcher("ab4cd5ef3g");
获取符合规则的所有字串
while(matcher.find()){
matcher.group();
}