编程当中正则表达式的应用往往会给程序带来意想不到的便利性,也许不用正则表达式可能很繁琐的处理过程,经过正则表达式的处理便会更加简短有效,为了日后复习时方便查看,便在此处记录自己对java正则表达式的一些总结,我也是正在学习当中,如有错误,还请及时批评指正。
部分正则表达式语法
符号 | 描述 |
. | 匹配除“\r\n"之外的任何单个字符 |
^ | 匹配输入字符串开始的位置,即以该字符串开头 |
$ | 匹配输入字符串结尾的位置,即以该字符串结尾 |
* | 零次或多次匹配前边的字符或子表达式,相当于{0,} |
+ | 一次或多次匹配前边的字符或子表达式,相当于{1,} |
? | 零次或一次匹配前边的字符或子表达式,相当于{0,1} |
{n} | n是非负整数,恰好匹配n次,例如"o{2}"匹配”cool“而不匹配“coool” |
{n,} | n是非负整数,至少匹配n次 |
{n,m} | 至少匹配n次,最多匹配m次 |
x|y | 匹配x或y |
[abc] | 匹配括号中的任意一个字符,例如[abc]匹配“apple”中的“a" |
[^abc] | 方向字符集,匹配不包含在【】中的字符,例如匹配“apple"中的”p" “p” "l” “e” |
[a-z] | 字符范围匹配a~z中的任意一个字符 |
[^a-z] | 同理 |
\b | 单词边界,即单词与空格之间 |
\B | 非单词边界 |
\d | 数字字符匹配,等效于[0-9] |
\D | 非数字 |
\w | 单词字符[a-zA-Z_0-9] |
\W | 非单词字符 |
\s | 匹配任何空白字符,包括 空格,制表符,换页符,等效于[\f\n\r\t\v] |
\S | 匹配任何非空白符 |
上边只是部分常用的语法,想了解更多的正则表达式语法,读者可以自行查询。通过对正则表达式的灵活组合和运用,可以解决很多的问题。例如邮箱,URL匹配,用户名合法检查,甚至是汉字匹配等等。
java String类型中正则表达式的应用
1、替代函数 replace()、replaceFirst()、replaceAll()函数
public String replace(CharSequence target,CharSequence replacement)
使用指定字符串替换指定字面值的字符串,即不支持正则表达式,替换所有满足条件的子字符串。
String s="stephen is stephen!";
String rex="stephen";
s=s.replace(rex, "#");
System.out.println(s);
运行结果为: # is #!
类似的,replaceFirst()只替换第一个满足条件的子字符串,replaceAll()替换所有满足条件的子字符串,但这两个函数支持正则表达式。
String s="stephen is stephen!";
String rex="\\bs";
String first=s.replaceFirst(rex, "%");
String all=s.replaceAll(rex, "#");
System.out.println(first);
System.out.println(all);
输出结果为:
%tephen is stephen!
#tephen is #tephen!
2、split()函数
按照指定的正则表达式切分字符串
String s="abc123def345gh908jkl!";
String rex="\\d{3}";
String[] result = s.split(rex);
for(String var:result)
System.out.print(var);
输出结果为
abcdefghjkl!
3、String 类maches()函数
public boolean matches(String regex)
判断此字符串是否匹配给定的正则表达式。
String s="abc123def345gh908jkl!";
String rex="[\\w!]*";
System.out.print(s.matches(rex));
输出结果为true.