使用Regex,如何查找被其他组字符分割的文本?

时间:2010-12-07 23:45:43

标签: .net regex

我正在寻找mhtml文件中的html结束标记。 html是固定宽度的行,末尾有换行符,如下所示:

size:12pt">Insert an image into the document here.</span></p><p style=3D"ma=
rgin:0pt 0pt 3pt; text-align:center"><img src=3D"image.001.png" width=3D"20=
0" height=3D"200" alt=3D"" /></p><p style=3D"margin:0pt 0pt 3pt"><span styl=
e=3D"font-family:Arial; font-size:12pt">&#xa0;</span></p></div></body></htm=
l>

注意&lt; / html&gt;结束标记在中间被“= \ n”分割。

如何找到&lt; / html&gt;结束标记,无论它在何处分割?

我可以使用类似于以下内容的Regex找到单个排列,但我想一次性完成。

<((=\n)?/html>)
</((=\n)?html>)
</h((=\n)?tml>)
</ht((=\n)?ml>)
etc...

我已阅读RegEx match open tags except XHTML self-contained tags并阅读了http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html等帖子,但我仍然认为这个问题是有效的。

我不是在做一个html解析引擎。我只是在寻找一种非常具体的模式。 而且......这必须明天出去。完成这项工作的所有重要理由和肮脏的解决方案&gt;:D

3 个答案:

答案 0 :(得分:2)

<(=\n)?/(=\n)?h(=\n)?t(=\n)?m(=\n)?l(=\n)?>

答案 1 :(得分:0)

只需使用Regex.Replace()并查找= \ r \ n并将其替换为String.Empty。那么你可以在没有干预的情况下进行比赛吗?

答案 2 :(得分:0)

HTML不是常规语言......它不适合使用正则表达式进行处理。

使用正则表达式对任意输入无法正确执行大括号或标记计数/匹配等任务。

您应该使用实际的HTML解析器来执行此操作,而不是正则表达式。