經過幾天閱讀StackExchange的帖子和無盡的反覆試驗,我決定要求這個世界幫助我。如何從Perl中的多行變量的RegEx操作獲取值的數組?
我有以下多行存儲在$received_data
中的字符串,我只需要打印每行上傳輸速度的值。
這裏是我的代碼片段:
my $received_data1 = 'Transfer Speed=81.9252432155658
2013/03/25 19:51:43,915|INFO|### STATUS: OK
2013/03/25 19:51:43,915|INFO|### DATA: Transfer Speed= 83.924363456758
2013/03/25 19:51:45,927|INFO|Checking FTP upload status...
2013/03/25 19:51:45,927|INFO|### INFO: Collect Throughput.
2013/03/25 19:51:45,927|INFO|Checking FTP upload status...
2013/03/25 19:51:45,927|INFO|### DATA: Transfer Speed=67.83685237005002';
my $regex = qr/Transfer Speed=([0-9]{1,}[.][0-9]{1,}[^\n])/m;
if($received_data1 =~ $regex){
#$received_data1 =~ s/$received_dat/$regex/gm;
print $1;
}else{
print "nothingFound";
}
從print $1
,我能夠獲得僅有第一傳輸速度,即81.9252432155658,而不是其他。我通過了修飾符/gm
讓Perl知道輸入字符串是多行的,並在找到第一個匹配後繼續搜索。 $regex
中的正則表達式在本網站上很好地工作:http://www.solmetra.com/scripts/regex/index.php,我得到了匹配值的數組。
獲取數組已足夠好,因爲我可以遍歷數組並將值打印到文件或控制檯上。
我將不勝感激任何幫助。 PS:我已經閱讀了大部分其他Stack Exchange帖子,但他們沒有幫助。我希望我沒有重複任何問題。如果有與我的請求相匹配的問題,我將非常感謝鏈接。
'ikegami',非常感謝你的建議。你的建議像魅力一樣工作! – shailenTJ 2013-03-26 13:02:23