标准化十进制数正则表达式

时间:2017-02-03 15:52:31

标签: regex

我正在寻找一个规范化十进制数的正则表达式。当我说标准化时,我的意思是删除所有前导零,以及小数点后的所有尾随零。

例如:

0.0 -> 0
1.230 -> 1.23
00123 -> 123
012.30400 -> 12.304
0102 --> 102"

到目前为止,我已经提出了这个

  

; |((小于=,^):????[0 + - ] +(= 0(:,| \乙| $))| 0 +(= [1-9]) )| .0+ \ C | \ B0 +(= \ d * \ b)| \乙|(小于???= [1-9])0 +(=,| $)

0.1的唯一问题是它返回.1否则它会起作用

2 个答案:

答案 0 :(得分:0)

如果每行只有一个条目,请尝试

^0*(\d+(?:\.(?:(?!0+$)\d)+)?)

See it here at regex101

如果您要全部扫描,可以尝试

\b0*(\d+(?:\.(?:(?!0+\b)\d)+)?)

See it here at regex101

他们都捕获了第1组的数字。

如果您要删除除数字之外的所有内容,请替换

^0*(\d+(?:\.(?:(?!0+$)\d)+)?).*$

与第1组。

Check it out here

答案 1 :(得分:0)

简单的替换就足够了:

^0+|(\.[0-9]+)0+$

替换将是捕获组1。