正则表达式 Pattern、Matcher

String上的正则表示式,实际上是利用了PatternMatcher的功能,当您呼叫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

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值