正则表达式,匹配逗号

写了个正则,如下:Stringstr="a:122,,122,,,21,,2,,,343";str=str.replaceAll("(\\d),,+(\\d)","$1,... 写了个正则,如下:String str = "a:122,,122,,,21,,2,,,343";
str = str.replaceAll("(\\d),,+(\\d)", "$1,$2");
System.out.println(str);
输出结果:a:122,122,21,2,,,343。根据输出结果我试验了下,2,,,343没有被匹配,原因是2被之前的21,,2匹配过并被替换过。求解决方法
我的需求是,匹配数字之间的两个以上的逗号并把这些逗号换成一个。一定要是数字之间的
展开
 我来答
洒脱又恬淡灬长颈鹿D
2018-04-18 · TA获得超过2.1万个赞
知道小有建树答主
回答量:158
采纳率:100%
帮助的人:23.7万
展开全部

String str = "a:122,,122,,,21,,2,,,343";

str = str.replaceAll("(?<=\\d+),{2,}(?=\\d+)", ",");

System.out.println(str);

  1. 正则表达式的"鼻祖"或许可一直追溯到科学家对人类神经系统工作原理的早期研究。美国新泽西州的Warren McCulloch和出生在美国底特律的Walter Pitts这两位神经生理方面的科学家,研究出了一种用数学方式来描述神经网络的新方法,他们创造性地将神经系统中的神经元描述成了小而简单的自动控制元,从而作出了一项伟大的工作革新。

  2. 在1951 年,一位名叫Stephen Kleene的数学科学家,他在Warren McCulloch和Walter Pitts早期工作的基础之上,发表了一篇题目是《神经网事件的表示法》的论文,利用称之为正则集合的数学符号来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为"正则集的代数"的一种表达式,因而采用了"正则表达式"这个术语。

  3. 之后一段时间,人们发现可以将这一工作成果应用于其他方面。Ken Thompson就把这一成果应用于计算搜索算法的一些早期研究,Ken Thompson是 Unix的主要发明人,也就是大名鼎鼎的Unix之父。Unix之父将此符号系统引入编辑器QED,然后是Unix上的编辑器ed,并最终引入grep。Jeffrey Friedl 在其著作《Mastering Regular Expressions (2nd edition)》(中文版译作:精通正则表达式,已出到第三版)中对此作了进一步阐述讲解,如果你希望更多了解正则表达式理论和历史,推荐你看看这本书。

  4. 自此以后,正则表达式被广泛地应用到各种UNIX或类似于UNIX的工具中,如大家熟知的Perl。Perl的正则表达式源自于Henry Spencer编写的regex,之后已演化成了pcre(Perl兼容正则表达式Perl Compatible Regular Expressions),pcre是一个由Philip Hazel开发的、为很多现代工具所使用的库。正则表达式的第一个实用应用程序即为Unix中的 qed 编辑器。

溥鹏举杜月
2019-12-14 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:27%
帮助的人:860万
展开全部
不知道你的匹配环境是怎么样的
用这个吧:\w+?
\d{1,2},\d{4},问号后面有空格
如果不要逗号,可以这样:(\w+?
\d{1,2}),(\d{4}),取匹配子文本1和2,就可以了
你的
[a-z]+\s
[0-9]{2},[0-9]{4},前面的
[a-z]+,没有包括大写和数字;[0-9]{2},匹配两次,一个数字的不匹配;式中的逗号是在匹配文本里面的,只是不知道你是否需要。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
make_big_money
2012-01-10 · TA获得超过233个赞
知道小有建树答主
回答量:272
采纳率:100%
帮助的人:291万
展开全部
String str = "a:122,,122,,,21,,2,,,343";
str = str.replaceAll("(?<=\\d+),{2,}(?=\\d+)", ",");
System.out.println(str);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yeahrahxephon
2012-01-05 · TA获得超过1166个赞
知道小有建树答主
回答量:1192
采纳率:0%
帮助的人:1237万
展开全部
str = str.replaceAll("(?<=\\d),+?(?=\\d)", ",");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式