Pattern类的主要作用是进行正则规范的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范。下面来通过具体例子了解一下:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo {

public static void main(String[] args) {
String string = "1983-07-27";
String patString = "\\d{4}-\\d{2}\\d{2}";
Pattern pattern = Pattern.compile(patString);
Matcher matcher = pattern.matcher(string);
if (matcher.matches()) {
System.out.println("日期格式合法!");
} else {
System.out.println("日期格式不合法!");
}

}

}

当然也可以通过使用Pattern类,对一个字符串进行拆分工作,这个在一般的机试中经常会考到:

import java.util.regex.Pattern;

public class RegexDemo01 {

public static void main(String[] args) {
String string = "A1B22C333D4444E55555F";
String patString = "\\d+";//定义拆分规则,因为字符串中数字个数不一样,所以这里用到\d+表示1位或者多位数字都可以。
Pattern pattern = Pattern.compile(patString);//实例化Pattern类
String[] strings=pattern.split(string);
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i]+"\t");
}
}

}

运行如下:A B C D E F 

 

了解了匹配和拆分工作,下面看一下Matcher类的替换操作:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo01 {

public static void main(String[] args) {
String string = "A1B22C333D4444E55555F";
String patString = "\\d+";// 定义拆分规则
Pattern pattern = Pattern.compile(patString);// 实例化Pattern类
Matcher matcher = pattern.matcher(string);
String newString = matcher.replaceAll("_");
System.out.println(newString);
}

}

运行实例:A_B_C_D_E_F

 

其实String类也对正则表达式有支持,String类中有三个方法支持正则操作:

1.public boolean matches(String regex)     字符串匹配;

2.public String replaceAll(String regex,String replacement)    字符串替换;

3.public String[] split(String regex)      字符串拆分;

下面通过一个例子来看一看怎么用:

public class RegexDemo01 {

public static void main(String[] args) {
String string1 = "A1B22C333D4444E55555F".replaceAll("\\d+", "--");
boolean temp = "1983-01-01".matches("\\d{4}-\\d{2}-\\d{2}");
String[] strings = "A1B22C333D4444E55555F".split("\\d+");
System.out.println(string1);
System.out.println(temp);
for (String string : strings) {
System.out.print(string + "\t");
}
}

}

运行实例:

A--B--C--D--E--F
true
A B C D E F 

可以发现以上程序运行结果和以前是一样的,所以在此建议读者以后最好直接在String类中的方法,这样比较方便。

喜欢的童鞋可以关注我