[英]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.