0

我有点像 perl 菜鸟,并试图弄清楚如何从一段文本中去除一些零。该行看起来像这样:

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

}

提前谢谢了。

4

2 回答 2

2

这是在字符串中截断浮点数的通用方法:

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

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

处理问题的更具体的方法是

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

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

于 2013-02-07T02:28:42.247 回答
1

简单地说:

$data =~ s/0+$/0/;
于 2013-02-07T01:45:24.093 回答