[英]perl extract/match last floating point number from string
需要从下面的字符串中提取最后一个浮点数并将其保存到变量中。
F791775 (6010.822, 4396.812) (6013.341, 4405.921) 9.451
预期产量: 9.451
使用以下正则表达式
my $inj_spacing = $line =~ m {(\d+.\d+)}x;
但这提取= 1
结果是数字1,因为您的正则表达式位于标量上下文中(因为左侧参数是标量)。 它只是一个真实值,表示正则表达式匹配。
您想要施加一个列表上下文,可以通过添加括号来实现:
my ($inj_spacing) = $line =~ m {(\d+\.\d+)}x;
(如工具所示,您还需要逃脱句号)
另外,当然,这将与第一个可能的时间匹配,因此您需要将其锚定到末尾:
my ($inj_spacing) = $line =~ m {(\d+\.\d+)\s*$}x;
我添加了\\s*
来考虑可选的空格。 如果尾随空格表示最后一列中缺少数据(例如,带有csv数据),则不建议这样做。 但是对于非正式类型的文本匹配,它将防止错误的不匹配。
如果您的字符串始终采用这种格式,则另一种选择是使用split
获得最后的fp编号:
use strict;
use warnings;
my $str = 'F791775 (6010.822, 4396.812) (6013.341, 4405.921) 9.451';
my $inj_spacing = ( split ' ', $str )[-1];
print $inj_spacing;
输出:
9.451
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.