正则表达式 的作用
1测试字符串中的模式,来进行数据验证
2替换文本
3基于模式匹配提取字符串中的子字符串
在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。
在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
所以,在其他的语言中(如Perl),一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达式中,两个 \\ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \\d,而表示一个普通的反斜杠是 \\\\。
chang'yong
1普通字符
x
\0mnn 8进制数字值 所代表的字符
\xhh 16进制数字值 所代表的字符 (注意这两个都是数值)
\uhhhh 所表示数字对应的unicode字符
2非打印字符
\t 制表符
\f 换页符
\r 回车符
\n 换行符
\cx x(必须是大小写英文字母之一)对应的控制符 如\cM 就是 ctrl-M
3特殊字符
4预定义字符
.可以匹配任意字符 注意除了换行符
\d 可以匹配任意数字
\D 可以匹配任意非数字
\w 可以匹配任意英文字母(无论大小写)、数字、下划线
\W 可以匹配任意非单词字符
\s 可以匹配所有 空白字符,包括空格、换行符、制表符等
\S可以匹配任意非 空白字符
如何记忆: w--word d--digital s--space
5方括号表达式
注意:-只有在方括号表达式中才是 元符号
元符号即是表示符号的符号
6圆括号表达式
匹配小括号内的字符串,可以是一个,也可以是多个,常跟“|”(或)符号搭配使用,是多选结构的
示例1:string name = "way2014"; regex:(way|zgw) result:结果是可以匹配出way的,因为是多选结构,小括号是匹配字符串的
示例2:string text = "123456789"; regex:(0-9) result:结果是什么都匹配不到的,它只匹配字符串"0-9"而不是匹配数字, [0-9]这个字符组才是匹配0-9的数字
7边界匹配符
8数量标识符
Java SE 中通过Parttern 和Matcher类 使用正则表达式
Parttern是不可变类,线程安全,可以在并发时安全使用
Parttern parttern =Parttern.compile("[abc]");
Matcher matcher=p.matcher("aaaaa");
Boolean result=matcher.matches();//返回结果
也可以将上面的代码 写成下面一行
Boolean result=Parttern.matches("[abc]","aaaaa");
注意:方式二会每次都重新编译Parttern对象,但是方法一不会
Matcher类的方法有
注意:
1)start 和end 的序号是从零开始的
2)lookingAt 只是匹配字符串开始的部分
Matcher类还有replaceAll(String str)、replaceFirst(String str)方法
会将匹配上的子串替换成其他字符串
String类中也有replaceAll(String regex,String str)、replaceFirst(String regex,String str)方法