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()
。
上一篇: java regex reluctant quantifier giving greedy quantifier
下一篇: Greedy Quantifiers