1. 正则表达式
正则表达式是一种特殊的字符串,一个正则表达式定义了一种字符串格式,例如可以用一个字符串定义常见手机号的格式:常见手机号是以13、15或18开头的11位数字字符串.
1.1 正则表达式元字符的写法及含义
见下表
例如
String regex = "\\d\\p{Upper}\\p{Alnum}";%0-9 大写 数字或字母
Scanner scanner = new Scanner(System.in);
while(true){
String s = scanner.next();
if(s.matches(regex))
System.out.println("匹配");
else
System.out.println("不匹配");
}
输入及输出结果如下
1Aa
匹配
1A2
匹配
1A#
不匹配
1.2正则表达式中方括号[]的使用
方括号的含义如下表
例如
String regex = "[b-d]";
Scanner scanner = new Scanner(System.in);
while(true){
String s = scanner.next();
if(s.matches(regex))
System.out.println("匹配");
else
System.out.println("不匹配");
}
输入及输出结果如下
a
不匹配
b
匹配
c
匹配
e
不匹配
1.3限定修饰符的用法
限定修饰符的用法如下表
例如
String regex = "[b-d]{1,3}";
Scanner scanner = new Scanner(System.in);
while(true){
String s = scanner.next();
if(s.matches(regex))
System.out.println("匹配");
else
System.out.println("不匹配");
}
输入及输出结果如下
c
匹配
ca
不匹配
cb
匹配
cbd
匹配
cbbd
不匹配
2. 字符串的替换
字符串替换使用String类的方法s.replaceAll(String regex,String replacement).将字符串s中的所有的与regex相匹配的部分替换为replacement,regex可以为普通字符串或者正则表达式.
例如
String s = new String("J.av.a大%法%好!!");
String regex = "\\p{Punct}";//标点符号
System.out.println(s);
System.out.println(s.replaceAll(regex, ""));//去掉所有表达点
运行结果如下
J.av.a大%法%好!!
Java大法好
3. 字符串的拆分
使用s.split(String regex)方法可以regex作为分隔符将s分割成几个部分.
例如
String s = new String("在1840年以前的一年,1月20日是个好日子");
String []word = s.split("\\D+");//这里需要一个 + 号,提取数字的方法
for(String w:word)
System.out.print(w+" ");
System.out.println();
运行结果如下
1840 1 20