Regex 正则表达式替换
我有点像perl noob,试图找出如何从一段文本中去掉一些零。 这条线看起来像这样:Regex 正则表达式替换,regex,perl,Regex,Perl,我有点像perl noob,试图找出如何从一段文本中去掉一些零。 这条线看起来像这样: 76.000 to 80.000 我试图去掉零,使它看起来像这样 76.0 to 80.0 但我这辈子都不能做regex的工作 这就是我所拥有的 if ($data =~ m/00/) # This is working { $data = s/(.*)\00(\s\[to]\s)(.*)\00/($1)($3)($4)/; # This isn't } 非常感谢。简单地说一下: $dat
76.000 to 80.000
我试图去掉零,使它看起来像这样
76.0 to 80.0
但我这辈子都不能做regex的工作
这就是我所拥有的
if ($data =~ m/00/) # This is working
{
$data = s/(.*)\00(\s\[to]\s)(.*)\00/($1)($3)($4)/; # This isn't
}
非常感谢。简单地说一下:
$data =~ s/0+$/0/;
简单地说:
$data =~ s/0+$/0/;
这是截断字符串内浮点数的通用方法:
s/([\d.]+)/ sprintf '%.1f', $1 /ge
在替换中使用sprintf
,通过使用求值来格式化捕获的内容。请注意,这将强制所有数字使用此格式
处理这个问题的一个更具体的方法是
s/\d+\.0\K0*//g
使用
\K
(keep)转义保留数字后跟句点和零,并删除该字符串后面的所有零。这是截断字符串内浮点数的通用方法:
s/([\d.]+)/ sprintf '%.1f', $1 /ge
在替换中使用sprintf
,通过使用求值来格式化捕获的内容。请注意,这将强制所有数字使用此格式
处理这个问题的一个更具体的方法是
s/\d+\.0\K0*//g
使用
\K
(keep)转义保留数字后面的句点和零,并删除该字符串后面的所有零。谢谢WoLpH。这很有效。看来我可能把“~”漏掉了,弄糊涂了。干杯汉克斯沃尔夫。这很有效。看来我可能把“~”漏掉了,弄糊涂了。干杯