2014-01-23 41 views
0

嗨,我有以下字符串從文件中讀取:查找的數字串第一個數字

231 352 502 24 532 0 1234 5

如何使用一個Perl的正則表達式搶到的一串數字的第一個數字?

我曾嘗試以下無濟於事:

$num =~ /(\d+)/

感謝。

+0

$ NUM =〜/(^ \ d +)/,希望這將工作值將存儲在$ 1中。 –

回答

1

對於給定的樣本輸入,wokrs罰款:

$ echo 231 352 502 24 532 0 1234 5 | perl -n -e 'print $1 if /(\d+)(.*)/' 
231 

$ echo 231 352 502 24 532 0 1234 5 | sed -r 's/([0-9]+)(.*)/\1/' 
231 
+0

似乎(\ d +)是正確的,但由於某種原因我得到了字符串中的所有數字。我想知道如果我的文件輸入是奇怪的?我將不得不進一步研究這一點。 – user1220086

+0

發佈您的命令及其輸出。 – slayedbylucifer

+0

$ line = /(\ d +)/; $ line = 231 352 502 24 532 0 1234 5. 它打印整行。 – user1220086

2
$s = "231 352 502 24 532 0 1234 5"; 
($num) = $s =~ /(\d+)/; 
print $num; 
1

你非常接近。

嘗試此

my $line = '231 352 502 24 532 0 1234 5'; 
my ($num) = $line =~ /(\d+)/; 
print $num; 

輸出

231 
+0

重複的答案。這個確切的代碼已經在@ ooga的答案中提供了。 – slayedbylucifer

+0

@slayedbylucifer:儘可能晚地聲明*變量很重要。你的標籤是什麼意思? – Borodin

相關問題