java正则表达式给予贪婪量词的勉强量词

即时通讯尝试了正则表达式量词

    Pattern p = Pattern.compile("^s(.*?)n$");
    Matcher m = p.matcher("sensation");
    if(m.matches()){
        System.out.println("dude how is this even possible");
        System.out.print(m.group() + m.start()+m.end()+"n");



    }else {
        System.out.println("sorry dude someting wrong");
    }

因为它是重量级量词,所以它应该给出以下结果说明

但是我不知道它在哪里出错或者我错过了什么


你已经告诉程序两次你的模式需要匹配整个字符串。 这就是为什么它不能仅仅匹配"sen"部分,即使你使用了一个不情愿的限定词。

(1)模式结尾处的$匹配字符串的结尾; 它不会让你匹配"sen"因为"sen"没有跟在字符串的末尾。

(2)您正在使用m.matches() ,它只在整个字符串匹配时才返回true。 查看matches的定义。

删除$并将matches()更改为find()

链接地址: http://www.djcxy.com/p/76933.html

上一篇: java regex reluctant quantifier giving greedy quantifier

下一篇: Greedy Quantifiers