2011-12-08 88 views
2

我正在用C#練習正則表達式。這是我的代碼:在C#中遞歸正則表達式#

string test = 
    "this is whole new line, with different parameters 10.1.2.1, 10.1.5.1, 10.1.3.1"; 
string a = Regex.Match(test, "10.[0-9].[0-9]+.[0-9]+").Value; 
Console.WriteLine(a); 

結果是10.1.2.1。它找到了第一場比賽,就是這樣。

如何遞歸執行此函數?我需要添加一些額外的代碼還是有一個正則表達式類,它有一個內置函數(我更喜歡)?

回答

10

您明確要求只使用Match方法進行一次匹配。您應該使用Matches,而是和遍歷結果:

string test = "this is whole new line, with different parameters 10.1.2.1, 10.1.5.1, 10.1.3.1"; 
foreach(Match result in Regex.Matches(test, "10.[0-9].[0-9]+.[0-9]+")) 
{ 
    Console.WriteLine(result); 
} 

該代碼將打印以下:

10.1.2.1 
10.1.5.1 
10.1.3.1 
+0

非常感謝你的回答,非常感謝 – user1068846

+1

@ user1068846你可以通過接受答案來表達你的感謝。 –

+0

先生,我點擊帖子是有用的。它被接受了嗎?我很抱歉,但我真的點擊它 – user1068846

1

RegEx.Match()文檔:

搜索在正則表達式的構造中指定的 正則表達式的第一次出現指定的輸入字符串。

它確實如此,返回第一個匹配。如果你想要所有匹配,你應該使用RegEx.Matches(string, string)

+0

先生,我知道:-),IM問的是有反正我可以得到所有的一些正則表達式內置函數的發生? – user1068846