正则表达式 - 替代

时间:2013-02-07 01:41:23

标签: regex perl

我有点像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

}

非常感谢提前。

2 个答案:

答案 0 :(得分:2)

这是截断字符串中浮点数的一般方法:

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

通过使用评估,在替换中使用sprintf来格式化捕获的内容。请注意,这会将所有数字强制转换为此格式。

处理问题的更具体方法是

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

使用\K(保持)转义来保留数字,后跟句点和零,并删除该字符串后的所有后续零。

答案 1 :(得分:1)

这个怎么样:

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