java正则表达式中,matches和find的效率问题 20

比如我要查找输入字符串中是否存在successStringinput="adsfadssuccesfadsf";//findPatternpattern=Pattern.... 比如我要查找输入字符串中是否存在success

String input = "adsfadssuccesfadsf";
// find
Pattern pattern = Pattern.compile("(?is)success");
Matcher matcher = pattern.matcher(input);
matcher.find();
// matches
Pattern.matches("(?is).*success.*", input);
此时(没有捕获组),matches 和 find 哪 个效率更高?匹配原理是不是相同?
展开
 我来答
100251733802
2014-02-26 · TA获得超过252个赞
知道小有建树答主
回答量:438
采纳率:33%
帮助的人:118万
展开全部

你可以看下源码,匹配原理是一样的,没什么大区别。效率应该是一样的。匹配原则代码块如下。

 this.hitEnd = false;
        this.requireEnd = false;
        from        = from < 0 ? 0 : from;
        this.first  = from;
        this.oldLast = oldLast < 0 ? from : oldLast;
        for (int i = 0; i < groups.length; i++)
            groups[i] = -1;
        acceptMode = anchor;
        boolean result = parentPattern.matchRoot.match(this, from, text);
        if (!result)
            this.first = -1;
        this.oldLast = this.last;
        return result;
追问
我两个里面的正则表达式是不一样的
匿名用户
2014-02-26
展开全部
如果仅仅是要判断是否存在,那是find好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华傲易49
2014-02-26 · TA获得超过455个赞
知道小有建树答主
回答量:935
采纳率:42%
帮助的人:302万
展开全部
第一个,第一个表达式在代码里已经编译了Pattern.compile("(?is)success");效率高
追问
可是我之匹配了一次,而且我也只需要匹配一次呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式