ITEEDU

Java Gossip: Pattern、Matcher

String上的正则表示式,实际上是利用了Pattern与Matcher的功能,当您呼叫String的matches()方法时,实际上是呼叫Pattern的静态(static)方法matches(),这个方法会传回boolean值,表示字符串是否符合正则表示式。

如果您想要重复使用您的正则表示式,则您可以使用Pattern的静态方法compile()进行编译,它会传回一个Pattern的实例,代表您的正则表示式,之后您就可以重复使用这个实例的matcher()方法来进行字符串比对,这个方法会传回一个Matcher的实例, Matcher上有一些寻找符合正则式条件的方法可供操作。

以下直接来看个实例:

UsePatternMatcher.java
import java.util.regex.*;
public class UsePatternMatcher {
	public static void main(String[] args) {
		String phones1 =
		"Justin's phone number: 0939-100391\n" +
		"momor's phone number: 0939-666888\n";
		Pattern pattern = Pattern.compile(".*0939-\\d{6}");
		Matcher matcher = pattern.matcher(phones1);
		while(matcher.find()) {
			System.out.println(matcher.group());
		}
		String phones2 =
		"caterpillar's phone number: 0952-600391\n" +
		"bush's phone number: 0939-550391";
		matcher = pattern.matcher(phones2);
		while(matcher.find()) {
			System.out.println(matcher.group());
		}
	}
}

这个程序会寻找手机号码为0939开头的号码,假设您的号码来源不只一个(如phones1、phones2),我们可以编译好正则表示式并传回一个 Pattern对象,之后就可以重复使用它,程序的执行结果如下:

Justin's phone number: 0939-100391
momor's phone number: 0939-666888
bush's phone number: 0939-550391