-5
我有一個字符串,其值爲Validation_File_2_3.45.2017.csv
。Perl正則表達式檢索第一個數字
如何在這種情況下使用正則表達式提取第一個數字是2?
我試圖表達($Filedigit) = ($Filename =~ m/^[0-9]/g)
,但它沒有工作
我有一個字符串,其值爲Validation_File_2_3.45.2017.csv
。Perl正則表達式檢索第一個數字
如何在這種情況下使用正則表達式提取第一個數字是2?
我試圖表達($Filedigit) = ($Filename =~ m/^[0-9]/g)
,但它沒有工作
在評論,你說你想這:
($Filedigit)= ($Filename =~ m/^[0-9]/g);
幾件事情。你應該總是檢查一場比賽是否成功,然後繼續你的腳本,特別是當試圖捕獲。接下來,^
從字符串的開頭看,然後立即在全局中查找單個數字0-9
。這不匹配,除非你有一個文件名,如2_blah.csv
。但是,您實際上並未嘗試捕獲任何內容,因此如果碰巧與某個條目匹配,則在所有情況下$Filedigit
將爲1
(表示發生匹配)。
這裏有一個例子,你想要做什麼:
use warnings;
use strict;
my $str = 'Validation_File_2_3.45.2017.csv';
# confirm there's a match
if (my ($num) = $str =~ /^.*?(\d+)/){
print "$num\n";
}
else {
print "no match\n";
}
正則表達式的說明:
^ - start from beginning of string
.*? - anything, non-greedy
( - begin capture
\d+ - any number of contiguous digit chars
) - end capture
所以,從字符串的開頭開始,拋出第一套前走什麼連續的數字並捕獲它們並將其放入變量中。
請參閱perlreftut和perlre。
你有什麼試過?數字和非數字的轉義字符是什麼?你如何在正則表達式中捕獲一個值? – AntonH
您好,我已經嘗試了表達式($ Filedigit)=($ Filename =〜m/^ [0-9]/g); –
@GauraviNaik:好的,當你嘗試時會發生什麼?爲什麼你讓我們努力工作以獲取我們需要回答的信息?你也應該*編輯*你的問題來添加信息,而不是寫在評論中。這次我爲你做了,但我們仍然需要知道你有什麼問題。 – Borodin