Java正则表达式问题?

如图,输出结果是什么,为什么?(主要是原因,想知道原因),求大佬,谢谢!... 如图,输出结果是什么,为什么?(主要是原因,想知道原因),求大佬,谢谢! 展开
 我来答
microroom
科技发烧友

2021-01-29 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1623万
展开全部
\\D是匹配一个非数字,\\D*是匹配0个或多个非数字,尽可能多,(\\D*)是将匹配到的所有非数字捕获到分组1以供需要时访问。

\\d是匹配一个数字,\\d+是匹配1个或多个数字,尽可能多,(\\d+)是将匹配到的所有数字捕获到分组2以供需要时访问。

.是匹配任意一个字符,.*是匹配0个或多个任意字符,尽可能多,(.*)是将匹配到的多个任意字符捕获到分组3以供需要时访问。

m.group(下标)是访问上面捕获到的分组,下标0对应整个捕获,下标1对应捕获到的分组1,下标2对应捕获到的分组2,以此类推。

所以,m.group(0)就是整个字符串,m.group(1)就是3000前面的所有字符,m.group(2)就是3000,m.group(3)就是3000后面的所有字符。
更多追问追答
追问
那个,字符不也是非数字吗,为什么不放在分组1?为什么分组1和分组3不可以互换呢
追答
分组按括号从左往右、从外往里(当括号嵌套时)计算。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式