【发布时间】:2009-05-29 15:30:43
【问题描述】:
我在 ASP.Net 2.0 应用程序中使用 VB.Net 来运行一些删除一些不必要标记的正则表达式。我想做的一件事是删除其中没有任何属性的 span 元素:
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>
我想删除外部 span 元素。不幸的是,我上面的正则表达式给了我这个结果,因为结束跨度匹配它遇到的第一个:
Lorem <span class="special">ipsum dolor sit amet.</span>
这可以通过 RegEx 实现吗?还是我必须实现一些更高级的东西?
【问题讨论】:
-
由于这是“我可以用正则表达式解析 HTML”主题的(在此处插入大数字)第一次迭代,因此我将其发布为评论:正则表达式不能,这很明确,识别嵌套结构。如果您想识别一种语言(例如“嵌套结构”),请务必使用解析器。您使用正则表达式看到的行为与单独使用正则表达式一样接近。
-
我想对 Tomalak 的评论给予与仅在上周出现的次数一样多的支持。
-
所以听起来我的问题的答案是:不,是的。之前提出的任何类似问题是否对 VB.Net/Asp.Net 2.0 的代码有答案?
-
因为只有其中一个提到了 Vb.Net,并且没有一个有任何特定于 vb.net 的代码,所以我将其视为否。 :-)
标签: .net asp.net vb.net regex asp.net-2.0