我想使用.NET Regex来匹配一些真正破碎的HTML,我不知道该怎么做。
我知道正则表达式对于这项工作来说是一个糟糕的工具,但我只需要从一个巨大的文件中提取一些基本文本,其中包含一些非常糟糕的HTML标记,我的问题对于擅长Regex的人来说似乎是小菜一碟
所以,暂时放下它的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>
代码之间可能存在换行符。或者,如果你愿意,整个字符串可以是一个巨大的行。
答案 0 :(得分:1)
简单地说:
<span.*?>(.*)</span>
工作正则表达式示例:
匹配
1. `First block with <span class=nest>nested</span> text.`
2. `Other block with <span class=nest>nested</span> text.`
答案 1 :(得分:0)