Java中使用正则表达式

在Java中使用正则表达式非常方便,使用
Pattern与Matcher两个类就可以满足需求。

  • Pattern 用来存储所使用的正则表达式
  • Matcher 用来对目标字符串执行正则表达式的匹配

例如,我们有一个字符串:

“In winter the nights are long and cold.”

现在我们想要匹配”long and cold”:

String testString = "In winter the nights are long and cold.";
Pattern testPattern = Pattern.compile("long and cold");
Matcher testMatcher = testPattern.matcher(testString);

Pattern的compile方法将我们的正则表达式编译成了一个“Pattern”,然后我们使用Pattern的matcher方法,并返回一个Matcher对象。


接下来,我们要通过Matcher的一系列方法,来从中提取出我们想要的字符串。
首先使用find()方法,可以在字符串中查找匹配正则,当有匹配到的字符串时,它会返回true

testMatcher.find()

我们需要根据返回值,通过Matcher的group方法,来提取出匹配到的组(如果没有find到任何串,调用group也是没有意义的):

if (testMatcher.find()){
    System.out.println(testMatcher.group(0));
}

程序输出:

long and cold

在这里,group(0)实际和直接调用group()(无参数)是一样的。
在Java中,通过正则直接匹配到的组,标号就是0。

标号非0的组,是使用正则捕获的组。这是正则表达式中的一个使用方法:
当我们在表达式中添加括号,则其中的部分被捕获并分组。
整个正则表达式匹配到的分组是0,
第一个括号捕获的分组是1,
第二个括号捕获的分组是2,……

例如我们想匹配”long and cold”这一短语,并从中提取出”long”和”cold”两个单词。那么我们的正则表达式需要写成

(long) and (cold)

find()方法调用前的代码完全相同,匹配到串以后,通过组号获得结果:

if (testMatcher.find()) {
    System.out.println(testMatcher.group(0));
    System.out.println(testMatcher.group(1));
    System.out.println(testMatcher.group(2));
}

这次程序的输出是:

long and cold
long
cold

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值