我需要从一组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>
您认为匹配此模式的好方法是什么?
答案 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(不是免费但价格低廉),因为这个工具为我节省了很多时间。
希望这有帮助。