2013-06-28 96 views
0

我想使用正則表達式從HTML中提取電話號碼。 我用這正則表達式電話號碼從HTML中提取使用正則表達式

\d{4}\s\d{3}\s\d{3} 

的電話號碼1234 546 567。這個正則表達式成功地從HTML中提取給定的電話號碼。

但有一個問題發生時,有另一個號碼(我想要提取)像這樣:1234 567 89023。現在從這個數字中,它也提取了1234 567 890,但我不希望它從該數字中提取任何東西。

然後,我改變了正則表達式來

^\d{4}\s\d{3}\s\d{3}$ 

,但現在它甚至沒有提取任何有效的數字。

我應該怎麼辦? 編輯:

string MatchAusPhoneNumber = @"\D(\d{4}\s\d{3}\s\d{3})\D"; 
MatchCollection mathph2 = Regex.Matches(chk, MatchAusPhoneNumber); 

foreach (Match matchio in mathph2) 
{ 
    foreach (Capture capture in matchio.Captures) 
    { 
     if (my.ContainsKey(capture.Value) == false) 
     { 
      my.Add(capture.Value, capture.Value); 
      mylist.Add(capture.Value); 
     } 
    } 
} 
+0

其中是vb.net標記? – BackSlash

+1

\ d {4} \ s \ d {3} \ s \ d {3,5} – Yami

回答

2

編輯:我剛纔重讀你的問題,這聽起來像你想從HTML中提取的433個位數的組。如果是這種情況,請嘗試正則表達式是這樣的:

\D(\d{4}\s\d{3}\s\d{3})\D 

\D只是一個數字會匹配一切。 ()用於捕獲第一個捕獲組中的實際電話號碼。


老答:如果你想在最後一組的數字是3至5個字符,試試這個:

\d{4}\s\d{3}\s\d{3,5} 

\d{3,5}意味着可以有35\d小號。

+0

OP不希望'1234 567 89023'匹配! –

+1

@AhmedKRAIEM是的。 「然後我改變了正則表達式......但現在它不提取任何數字。」這意味着他*希望*提取數字。 – Doorknob

+0

這聽起來像@Nomi希望匹配文本內的數字,在這種情況下,'^'和'$'是不必要的(否則這將不匹配第一種情況)。 – Yossarian