2012-08-22 45 views
1

我有這樣的代碼:正則表達式找到最後一個整數一行

23561623:page[1].12 
6461620:page[3].7 
43631619:page[1].1 
265461620:page[6].2 
21461621:page[1].10 

我得就像12,7,1,2,10等的最後一個整數能有人幫忙寫preg_match所以我可以得到它?

由於提前, 幸運

回答

7
$str = '23561623:page[1].12'; 
$parts = explode('.', $str); 
echo $parts[1]; 

如果你必須使用preg_match(即使它沒有必要在這裏):

$str = '23561623:page[1].12'; 
$matches = array(); 

if (preg_match('/\.(\d+)$/', $str, $matches)) { 
    echo $matches[1]; 
} 
+2

我不得不刪除我的答案,因爲它是如此劣等。 +1! – Matt

+0

下面是正則表達式和主題字符串的解釋和可視化:http://regex101.com/r/vL7fN9 –

+0

非常感謝。你是天才。它快速而精湛。 – saint

0

其他的答案似乎認爲總會有成爲一段時期;可能會有,但下面並沒有做出這樣的假設。

如果你有這樣的字符串中的一個塊,你可以運行這個正則表達式代碼:

if (preg_match_all('/(\d+)\s*$/m', $str, $matches)) { 
    // $matches[1] contains all the integers 
} 

它的最後一組數字((\d+))匹配任選隨後空白(\s*),直到行末($)。 /m修飾符使$表現爲行尾而不是主題結束。

相關問題