我想使用.NET Regex來匹配一些真正破碎的HTML,我不知道該怎麼做。將內容與嵌套標記匹配
我知道正則表達式對於這項工作來說是一個糟糕的工具,但我只需要從一個巨大的文件中提取一些基本的文本,這些文件裏面有一些非常糟糕的HTML標記,而我的問題似乎對於擅長處理某人的小菜一碟正則表達式。
所以,撇開它的HTML了一會兒,讓我們說我有這樣的:
<span class=comment>First block with <span class=nest>nested</span> text.</span>
<stuff>
<more-badly-formatted-tags>
<td - out of nowhere>
<span class=comment>Other block with <span class=nest>nested</span> text.</span>
我只是想獲得的span
標籤的所有內容,與任何嵌套span
相隨。對於上面的例子,這將僅僅是:
First block with <span class=nest>nested</span> text.
Other block with <span class=nest>nested</span> text.
這就是我需要的一切,這就是爲什麼我沒有想進入HtmlAgilityPack可言。
我到目前爲止已經試過
樸素的正則表達式:
@"<span class=comment>(<?comment>.*)</span>"
:這會貪婪地匹配第一個和最後span
之間的一切。懶惰正則表達式:
@"<span class=comment>(<?comment>.*?)</span>"
:這將匹配第一次關閉span
,並且不會與嵌套標記一起使用。平衡:
@(?<tag>\<span\b[^\>]*\>)(?<comment>.*)(?<-tag>\</span\>)"
:但顯然我沒有得到語法,因爲這是行不通的。
任何人都可以幫助我嗎?
[更新]
注意,有可能是這些<span>
標籤之間換行。或者,如果你願意,整個字符串可以是一個巨大的線。
如何簡單:(。*)''?這應該做到這一點。 :) –
MElliott