find函数介绍java_架构师之路(八)之JAVA正则中matches、find、lookingAt用法区别

引言

JAVA正则的用法在整个java体系非常普遍,一些很常用的匹配方法必须要掌握,至少得理解其原理,否则接下来的路会很难走。

背景介绍

JAVA正则表达式中,Match的匹配取值有以下几种,其含义

序号方法及说明

1public boolean lookingAt()

尝试将从区域开头开始的输入序列与该模式匹配。

2public boolean find()

尝试查找与该模式匹配的输入序列的下一个子序列。

3public boolean find(int start)

重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。

4public boolean matches()

尝试将整个区域与模式匹配。

案例说明

上面的简介介绍的挺详细,说的也很全乎,但依旧糊里糊涂,还是不懂。下面直接拿例子说话,将用大白话解释着三者的区别,方便以后的理解以及

使用:

public static void main(String[] args) {

String regex = "\\d{3,5}";

Pattern pattern = Pattern.compile(regex);

String charSequence = "123-34345-234-00";

Matcher matcher = pattern.matcher(charSequence);

//虽然匹配失败,但由于charSequence里面的"123"和pattern是匹配的,所以下次的匹配从位置4开始

print("是否匹配:"+matcher.matches());

//测试匹配位置

matcher.find();

print("匹配开始位置"+matcher.start());

//使用reset方法重置匹配位置

print("重置匹配位置:"+matcher.reset());

//第一次find匹配以及匹配的目标和匹配的起始位置

print(matcher.find());

print("第一次find匹配以及匹配的目标和匹配的起始位置:"+matcher.group()+" - "+matcher.start());

//第二次find匹配以及匹配的目标和匹配的起始位置

print(matcher.find());

print("第二次find匹配以及匹配的目标和匹配的起始位置:"+matcher.group()+" - "+matcher.start());

//第一次lookingAt匹配以及匹配的目标和匹配的起始位置

print(matcher.lookingAt());

print("第一次lookingAt匹配以及匹配的目标和匹配的起始位置:"+matcher.group()+" - "+matcher.start());

//第二次lookingAt匹配以及匹配的目标和匹配的起始位置

print(matcher.lookingAt());

print("第二次lookingAt匹配以及匹配的目标和匹配的起始位置:"+matcher.group()+" - "+matcher.start());

}

public static void print(Object o){

System.out.println(o);

}

将上述的执行结果打印如下:

是否匹配:false

匹配开始位置4

重置匹配位置:java.util.regex.Matcher[pattern=\d{3,5} region=0,16 lastmatch=]

true

第一次find匹配以及匹配的目标和匹配的起始位置:123 – 0

true

第二次find匹配以及匹配的目标和匹配的起始位置:34345 – 4

true

第一次lookingAt匹配以及匹配的目标和匹配的起始位置:123 – 0

true

第二次lookingAt匹配以及匹配的目标和匹配的起始位置:123 – 0

Process finished with exit code 0

通过上述的例子,应该很简洁明了的说明三者的作用了吧?

总结如下:

1)matches:总是全词匹配,并且总是从下一个匹配位置开始匹配;

2)find:总是部分匹配,如果匹配成功,将会从下一个匹配位置开始匹配;

3) lookingAt:总是部分匹配,并且总是从起始位置开始匹配,跟matches类似,不过不需要全部匹配

以上仅代表个人观点,如有错误的地方请各位小伙伴批评指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值