先看一下正则表达式的一些基本符号及用法:
. 表示任意一个字符
[asd] 表示a或s或d
[^asd] 除了asd之外的
[a-z] 所有小写字母
[A-Z] 所有大写字母
\d 任意的数字
\D 非数字
\w [A~Z a~z 0~9] 大小写字母 数字0~9
\W 字符
========================
* 0次或多次
+ 1次或多次o
? 0次或1次
{n} 恰好是n次
{n,m} 至少是n次,但不多于m次
接下来看一下以上的符号在Java的代码中的用法及效果
public static void main(String[] args) {
String str1 = "123ABCDabcd+-*/%";
String str2 = "abzoozozAB";
System.out.println(str1.replaceAll(".", "x")); //将所有字符替换成x
System.out.println(str1.replaceAll("[abc]", "x"));//将a,b,c替换成x
System.out.println(str1.replaceAll("[ABC]", "x"));//将A,B,C替换成x
System.out.println(str1.replaceAll("[a-d]", "*"));//将a到d之间的小写字母替换成*
System.out.println(str1.replaceAll("[A-D]", "*"));//将A到D之间的大写字母替换成*
System.out.println(str1.replaceAll("\\d", "*"));//将所有的数字替换成*
System.out.println(str1.replaceAll("\\D", "*"));//将所有的非数字字符替换成*
System.out.println(str1.replaceAll("\\wabc", "*"));//将abc整体替换成*,其中abc处可替换成大写字母或小写字母或数字
System.out.println(str1.replaceAll("\\W+-", "*"));//将+-整体替换成*,其中+-处可替换成其他字符
System.out.println("====================");
System.out.println(str2.replaceAll("zo*", "*"));//匹配zo或多于zo多个字符的zoo,或少于zo字符数的z,并替换成*
System.out.println(str2.replaceAll("zo+", "*"));//匹配zo或多余zo一个字符的,并替换成*
System.out.println(str2.replaceAll("zo?", "*"));//匹配于zo相等或少zo的z,进行替换
System.out.println(str2.replaceAll("zo{1}", "*"));//匹配zo相等的字符,{}中的1,表示可以匹配数组后几位。列:zo{2}将会匹配zoo,最后面两位是相同的
System.out.println(str2.replaceAll("zo{1,2}", "*"));//和上一个相似,只不过这个可以指定一个范围,匹配后一位,或后两位相同的
}
结果: