在html中匹配正则表达式,忽略空格和引号

时间:2009-03-04 01:23:49

标签: c# regex

我需要从一组HTML文件中找到一个块,然后从中删除它们。这些文件确实被黑客攻击了,所以我不想像以前那样使用HtmlAgility包解析它,而是想使用一个简单的正则表达式。

html的部分将始终如下:

<CENTER>some constant text <img src=image.jpg> more constant text: 
 variable section of text</CENTER>

以上所有可以是大小写的任意组合,并注意到它是img src = image.jpg而不是img src =“image.jpg”......并且可以有任意数量的空白区域常数字符之间的字符。

以下是一些例子:

    <CENTER>This page has been visited 
<IMG SRC=http://place.com/image.gif ALT="alt text">times since 10th July 2007
</CENTER>

    <center>This page has been visited 
<IMG src="http://place.com/image.gif" Alt="Alt Text"> 
times since 1st October 2005</center> 

您认为匹配此模式的好方法是什么?

4 个答案:

答案 0 :(得分:2)

需要多少文本来唯一标识目标?我先试试这个:

@"(?is)<center>\s*This\s+page\s+has\s+been\s+visited.*?</center>"

答案 1 :(得分:1)

这实际上取决于你制作正则表达式和匹配所需元素的简单程度。

<center>[^<]+<img[^>]+>[^>]+</center>

也使用不区分大小写的标志(我不知道C#使用什么)。如果你需要更开发的东西,因为你会遇到img标签位于中心标签内并且不匹配的情况,那么你就可以像其他答案一样开始硬编码短语。

答案 2 :(得分:0)

在C#中你可以简单地使用它,假设originalHTML包含整个HTML文件。

string result = null;
result = Regex.Replace(originalHtml,
                       @"(\s*<center>[^<]*<img src=[^""].*?>.*?</center>\s*)", 
                       "", 
                       RegexOptions.Singleline | RegexOptions.IgnoreCase);

正则表达式将删除原始HTML中出现的任何模式并返回修改后的版本。

答案 3 :(得分:0)

我应该测试RegExBuddy(不是免费但价格低廉),因为这个工具为我节省了很多时间。

希望这有帮助。