我正在尝试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");
}
因为它是重新定量的,所以应该给出以下结果 森 sation
但是我感觉到它出错的地方或我错过了什么
答案 0 :(得分:2)
您已经告诉程序两次您的模式需要匹配整个字符串。这就是为什么它只能与"sen"
部分匹配,即使您使用不情愿的限定符也是如此。
(1)模式末尾的$
匹配字符串的结尾;它不会让您匹配"sen"
,因为"sen"
后面没有字符串的结尾。
(2)您正在使用m.matches()
,只有在整个字符串匹配时才会返回true。请参阅matches
的定义。
删除$
并将matches()
更改为find()
。