2013-02-07 92 views
0

我是一位perl noob,试图弄清楚如何从一段文本中去掉一些零。 行看起来是这样的:正则表达式 - 替代

76.000 to 80.000 

,我试图删除零,使它看起来像这样

76.0 to 80.0 

,但不能为我的生命得到了正则表达式工作。

这是我应得的

if ($data =~ m/00/) # This is working 

{ 

    $data = s/(.*)\00(\s\[to]\s)(.*)\00/($1)($3)($4)/; # This isn't 

} 

许多在此先感谢。

回答

1

如何简单:

$data =~ s/0+$/0/; 
+0

这会影响5006.000不正确,我相信。 –

+0

@ David-SkyMesh:你确实没错,我会纠正它:) – Wolph

+0

谢谢WoLpH。这工作。看起来好像我可能会把“〜”弄糊涂了。干杯 – MicrobicTiger

2

这是截取字符串内浮点数的通用方法:使用sprintf替换里面格式化无论是拍摄

s/([\d.]+)/ sprintf '%.1f', $1 /ge 

,通过使用评价。请注意,这会将所有数字强制转换为此格式。

更具体的方式来处理这个问题将是

s/\d+\.0\K0*//g 

使用\K(保持)逃生保存和数字随后期零,并删除该字符串后,所有的后续零。