正则表达式添加千位分隔符
正常的整数分隔:
my $number = <STDIN>; if( $number =~ s/(d{1,3})(?=(?:d{3})+(?!d)/$1,/g){ print $number; }
但是现在我们要给比如12312312.13123这样带小数的分隔,上面就不能用,
有网友提供
s/(d{1,3})(?=(?:d{3})+(?!d|$)/$1,/g
的确可以匹配,但我不太懂什么意思,$是末尾的意思,这里是怎么组合的?
还有这个匹配反过来也不能匹配没有小数的,有大虾可以写出既同时匹配小叔和整数的办法不
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
手打的,失策失策,改回来拉=。=sorry
话说这个算比较经典的正则表达式,对着说明就能看懂的拉
太高深了!您问题提的都有错误!s/(d{1,3})(?=
{?:d{3})+(?!d
|$)/$1,/g
12,312,312.13123
比如12312312.13123这样带小数的分隔 :这个分割成什么样?
看不懂
(?!(d|$))可以解释为不是非数字或不是末尾,还是加上括号不容易歧义。
暂时没想到同时匹配,就在外面加个判断吧,哈哈。坐等大虾出现