2009-12-18 54 views
0

我正在嘗試編寫一個正則表達式,它可以解析< p> </p>標記之間的文本。連續最多有3行文字。我想這可能是可能的使用(?那我現在使用得到一個行如下=搜索尋址功能。使用正則表達式(.Net)捕獲多行

的代碼。

<p>([^']*?)<[/]p 

是否有可能有一個正則表達式可以得到的標籤多行之間的文本?每一行都將需要在自己的組。

一個例子是

<p>The</p> 
<p>Grey</p> 
<p>Fox</p> 
+0

不要忘記看看有史以來投票最多的答案:http://stackoverflow.com/questions/1732348/please-please-please-dont-use-regex-for-html-tony-the-pony-he -comes/1732454#1732454 –

+0

感謝您的鏈接。我已經看到了,並認爲我將是安全的,因爲這是我解析的HTML中唯一的東西。 – Ryan

回答

2

首先,這將是我們很容易在Html Agility Pack,你會得到一個更強大的解決方案。

但是,如果你在格式的控制是100%,輸入來自可信來源來,你可以在某些情況下,正則表達式做到這一點:

Match match = Regex.Match(html, @"(?:<p>(.*?)</p>\s*)+", RegexOptions.Singleline); 
if (match.Success) 
{ 
    foreach (Capture line in match.Groups[1].Captures) 
     Console.WriteLine(line.Value); 
} 

輸出:

The 
Grey 
Fox 
+0

爲什麼要調用'OfType'? –

+0

意外。從測試中遺留下來。 (我真的測試過它,誠實!) –