我在一個ASP.Net 2.0應用程序中使用VB.Net運行一些正則表達式,刪除一些不必要的標記。其中一個是我想要做的一件事就是刪除沒有在他們的任何屬性的span元素:正確匹配結束標記與HTML中的開始標記與RegEx
output = Regex.Replace(output, "<span\s*>(?<Text>.*?)</span>" & styleRegex, "${Text}", RegexOptions.Compiled Or RegexOptions.CultureInvariant Or RegexOptions.IgnoreCase Or RegexOptions.Singleline)
因此,對於這個內容:
<span>Lorem <span class="special">ipsum</span> dolor sit amet.</span>
我想刪除外部跨度元素。不幸的是,我的正則表達式上面給了我這個結果,由於封閉跨度匹配它遇到的第一個:
Lorem <span class="special">ipsum dolor sit amet.</span>
這可能與一個正則表達式或我將不得不實施一些更先進?
由於這是(在此插入大數字)「我可以用正則表達式解析HTML」主題,所以我將其作爲註釋發佈:正則表達式不能通過它的定義識別嵌套結構。如果您想識別語言(例如「嵌套結構」),請使用解析器。你用正則表達式看到的行爲就像用正則表達式一樣。 – Tomalak 2009-05-29 15:59:39