java 正则表达式matcher.group()匹配多种结果的规则 20
1,为什么他匹配的是整个的,而不是前三个字符。2,如果我把mat.group()改为mat.group(1)什么都不显示,是怎么回事...
1,为什么他匹配的是整个的,而不是前三个字符。
2,如果我把mat.group()改为mat.group(1)什么都不显示,是怎么回事 展开
2,如果我把mat.group()改为mat.group(1)什么都不显示,是怎么回事 展开
7个回答
展开全部
这是由正则表达式的匹配策略所导致的,如果想要得到多个小的匹配结果你需要将正则表达式改为:
String reg = "乘+(.*?)+车";
具体原理你可以查看这个链接:http://blog.csdn.net/luoweifu/article/details/42759439 讲的很详细
推荐于2017-09-11
展开全部
为什么他匹配的是整个的,而不是前三个字符。 贪婪比配,匹配最多的字符
如果需要改成非贪婪的模式reg="乘(.+?)车" 可以匹配到3个字符 ,再不明白,可以百度
group(1)不显示,你可以把括号后面的+去掉试试
如果需要改成非贪婪的模式reg="乘(.+?)车" 可以匹配到3个字符 ,再不明白,可以百度
group(1)不显示,你可以把括号后面的+去掉试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class RegExp{
public static void main(String[] args) {
Matcher matcher=Pattern.compile("乘+(.+)车").matcher("乘乘阿飞娃儿车,乘风微风车,的发生");
while(matcher.find()){
System.out.println(matcher.group(1));
}
}
}
你正则中第二个‘+’号什么意思啊?
追问
网上看的案例,我认为是字符串的+。
还有如果把 点后边的+改成?又什么都匹配不了了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用Reluctant 数量词
String reg="乘+(.*?)车";
while(m.find()){
m.group(1);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询