matcher.find() 匹配成功,但是System.out.println(matcher.find())返回false

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matcher.find() 匹配成功,但是System.out.println(matcher.find())返回false相关的知识,希望对你有一定的参考价值。

/**
* 测试正则表达式匹配成功或失败
*/
Pattern pattern = Pattern.compile("\\bjava\\b");
Matcher matcher = pattern.matcher("java");
System.out.println(matcher.find());
这个明明匹配成功了,但是输出的是false,用Debug调试时,刚开始是true,再下一步又变成false,这是为什么?

你调错方法了
如果全字符串匹配
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

find()方法是部分匹配,是查找输入串中与模式匹配的子串,使用group()函数。追问

Pattern pattern = Pattern.compile("\\bjavaaaaaaaaaaaa\b");
Matcher matcher = pattern.matcher("java");
System.out.println(matcher.find());
这样结果也不是我想要的,matcher.find()方法还是false

参考技术A

把你的代码复制到我的工程里,输出结果为“true”  

参考技术B 楼主找到解决办法了吗 我也遇到了这个问题,有时是true 有时候是false

以上是关于matcher.find() 匹配成功,但是System.out.println(matcher.find())返回false的主要内容,如果未能解决你的问题,请参考以下文章

第27章 正则表达式

为什么我在java中一次Matcher.find()的执行中得到所有的匹配?[重复]

当 Matcher.find() 运行时间过长时,如何终止它?

正则表达式里matcher.find()一直为false

正则表达式

正则的