代码如下:String a = "aaaaaab";
String patternStrs = "a*b";
Pattern pattern = Pattern.compile(patternStrs);
Matcher matcher = pattern.matcher(a);
while (matcher.find()) {
}
System.out.println(matcher.find());
boolean b = Pattern.matches("a*b","aaaaaab");
System.out.println(b);同样的表达式用什么matcher.find()返回的是false,而Pattern.matches返回的是true,麻烦各位高手帮解释下,谢谢。
String patternStrs = "a*b";
Pattern pattern = Pattern.compile(patternStrs);
Matcher matcher = pattern.matcher(a);
while (matcher.find()) {
}
System.out.println(matcher.find());
boolean b = Pattern.matches("a*b","aaaaaab");
System.out.println(b);同样的表达式用什么matcher.find()返回的是false,而Pattern.matches返回的是true,麻烦各位高手帮解释下,谢谢。
解决方案 »
- mybatis 不管在任何命名空间下 sql代码段的id都不能重复?
- 500元工资,求JAVA高手调试一个SIP服务器程序(要用到的技术FLEX\JAVA ee)
- Failed to load or instantiate TagExtraInfo class: org.apache.struts.taglib.tiles
- 关于struts—menu的树的节点信息怎么被另一个jsp界面获得!在线等!100分!
- 各位大哥,麻烦帮小弟一个忙,帮我看看我写的dotnet调用Web Service (Document style)的代码有什么问题。
- 谈谈 Android 开发 和javaEE 开发 那个前景好点
- hibernate如何使用jndi来连接oracle数据库
- weblogic服务器启动提示错误:java.lang.ClassNotFoundException: org.apache.jasper.servlet.JspServlet.急
- 请问在java中statement 和 expression 有什么区别?
- 求助,,毕业设计需要做一个简单的app
- structs1.2中应用JS的document.forms.[].elements时出错
- 正则表达式:去掉字符串中的逗号
}
System.out.println(matcher.find());
你这样肯定是输出false啊
不是正则没有匹配,而是你的matcher已经找出所有的匹配结果了,你在让他find,它当然就找不到了
while (matcher.find()) {}
matcher.reset();//重置matcher
System.out.println(matcher.find());
这样就相当于你没有写那个while循环了,打印的是true
public static boolean matches(String regex,
CharSequence input)编译给定正则表达式并尝试将给定输入与其匹配。
调用此便捷方法的形式 Pattern.matches(regex, input);与表达式
Pattern.compile(regex).matcher(input).matches() 的行为完全相同。
如果要多次使用一种模式,编译一次后重用此模式比每次都调用此方法效率更高。
参数:
regex - 要编译的表达式
input - 要匹配的字符序列
抛出:
PatternSyntaxException - 如果表达式的语法无效find
public boolean find()尝试查找与该模式匹配的输入序列的下一个子序列。
此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。 如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。
返回:
当且仅当输入序列的子序列匹配此匹配器的模式时才返回 true。
这个翻一下API就有解析了。。而且你可以自己多试