java正则表达式问题

下面是我的代码:publicvoidtestReg(){Patternp=Pattern.compile("^[0-5]*$");Matchermach=p.matche... 下面是我的代码:
public void testReg(){
Pattern p = Pattern.compile("^[0-5]*$");
Matcher mach = p.matcher("2131232131");
if(mach.matches()){
System.out.println(mach.group());
}else{
System.out.println("none matched");
}
System.out.println("*************************");
if(mach.find()){
System.out.println(mach.group());
}else{
System.out.println("none find");
}
}
为什么输出是这样的呢
2131232131
*************************
none find
我觉得应该都是输出2131232131,为什么下面的是没有find呢
展开
 我来答
liuyang054
推荐于2016-06-12 · TA获得超过9093个赞
知道大有可为答主
回答量:5317
采纳率:78%
帮助的人:5295万
展开全部

matcher0对象在调用matches()后修改了这个对象的某个全局变量.

在match()方法中有this.oldLast = this.last;等代码, 而find()中则没有.


这个就是match()和find()方法的区别

import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * mathch()和find()方法的区别
 * @author Administrator
 *
 */
public class TestReg{
public static void main(String[] args) {
Pattern p = Pattern.compile("^[0-5]*$");
Matcher mach = p.matcher("2131232131");
if(mach.find()){
System.out.println("fin(): " + mach.group());
}else{
System.out.println("none find");
}
System.out.println("*************************");
if(mach.matches()){
System.out.println("match(): " + mach.group());
}else{
System.out.println("none matched");
}
}
}
yockii
2015-04-01 · TA获得超过179个赞
知道答主
回答量:35
采纳率:0%
帮助的人:18.8万
展开全部
你可以把find放前面,matches放后面。
因为matches中有一行代码:
this.oldLast = this.last;
相当于把游标放到了最后了。这个时候再用find就找不到了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式