java 正则表达式matcher.group匹配多种结果的规则

这是由正则表达式的匹配策略所导致的,如果想要得到多个小的匹配结果你需要将正则表达式改为:String reg = "乘+(.*?)+车";即可得到想要的结果:具体原理你可以查看这个链接:http://blog.csdn.net/luoweifu/article/details/42759439 讲的很详细 ...
java 正则表达式matcher.group匹配多种结果的规则
首先回答你第一个疑问,java正则默认贪婪匹配的,你括号中是.*,这样的表达式表示匹配0个或多个字符串,那么,正则肯定给你匹配到结尾那地方为止,解决方法:1、若具体知道乘车之间由多少个字符的话,用.{0,3},这样去表达,表示乘车之间最少0个字符,最多3个字符;2、搜一下非贪婪匹配怎么写
现在回答你第二个问题,如果你要要出所有的匹配字符串,建议使用while(mat.find()){String reuslt = mat.group()};这样的方式去找,除此之外那些方法我也是用的莫名奇妙的,不懂就不说了2017-09-08
public class RegExp{ public static void main(String[] args) { Matcher matcher=Pattern.compile("乘+(.+)车").matcher("乘乘阿飞娃儿车,乘风微风车,的发生"); while(matcher.find()){ System.out.println(matcher.group(1)); } }}你正则中第二个‘+’号什么意思啊?
2014-11-19
使用Reluctant 数量词
String reg="乘+(.*?)车";while(m.find()){ m.group(1);}2017-08-23
这是由正则表达式的匹配策略所导致的,如果想要得到多个小的匹配结果你需要将正则表达式改为:
String reg = "乘+(.*?)+车";即可得到想要的结果:
具体原理你可以查看这个链接:http://blog.csdn.net/luoweifu/article/details/42759439 讲的很详细
2017-07-05
为什么他匹配的是整个的,而不是前三个字符。 贪婪比配,匹配最多的字符
如果需要改成非贪婪的模式reg="乘(.+?)车" 可以匹配到3个字符 ,再不明白,可以百度
group(1)不显示,你可以把括号后面的+去掉试试2017-08-29
1, 贪婪性,匹配尽可能多的字符。改成 乘+(.*?)+车。2014-11-19
显然,输出结果不是整个字符串,少了一个网字。java默认是贪婪模式,从第一个乘字,匹配到最后一个车字,匹配结束。2018-05-07
mengvlog 阅读 7 次 更新于 2025-07-19 17:46:10 我来答关注问题0
檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部