C# 在html中匹配正则表达式,忽略空格和引号
我需要从一组HTML文件中找到某个块,然后将其全部删除。这些文件实际上是被黑客攻击的HTML,所以我不想像以前那样用HtmlAgility包来解析它,我想使用一个简单的正则表达式 html的部分将始终如下所示:C# 在html中匹配正则表达式,忽略空格和引号,c#,regex,C#,Regex,我需要从一组HTML文件中找到某个块,然后将其全部删除。这些文件实际上是被黑客攻击的HTML,所以我不想像以前那样用HtmlAgility包来解析它,我想使用一个简单的正则表达式 html的部分将始终如下所示: <CENTER>some constant text <img src=image.jpg> more constant text: variable section of text</CENTER> 一些常量文本更多常量文本: 文本的可变部分
<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>
此页面已被访问
2007年7月10日以来的泰晤士报
或
此页面已被访问
2005年10月1日以来的时间
您认为什么是匹配此模式的好方法?需要多少文本才能唯一标识目标?我想先试试这个:
@"(?is)<center>\s*This\s+page\s+has\s+been\s+visited.*?</center>"
@(?is)\s*此\s+页面\s+已被\s+访问。*?”
这实际上取决于您如何简化正则表达式并匹配所需的元素
<center>[^<]+<img[^>]+>[^>]+</center>
[^[^>]+
也使用不区分大小写的标志(我不知道C使用什么)。如果您需要更完善的内容,因为您会遇到img标记位于中心标记内且不匹配的情况,那么您可以像其他答案一样开始硬编码短语。在C#中,您可以简单地使用它,假设originalHTML
包含您的整个HTML文件
string result = null;
result = Regex.Replace(originalHtml,
@"(\s*<center>[^<]*<img src=[^""].*?>.*?</center>\s*)",
"",
RegexOptions.Singleline | RegexOptions.IgnoreCase);
字符串结果=null;
结果=Regex.Replace(原始HTML,
@(\s*[^Ignore case(i)和single line(s)--例如,不必担心大小写和换行符。我刚意识到冒号在您使用它时是不需要的,所以我删除了它。这里有一个完整的解释:您100%确定这个正则表达式可以工作吗?它找不到任何匹配项,或者我搞错了:)哦,我没有看到上面的评论:)
string result = null;
result = Regex.Replace(originalHtml,
@"(\s*<center>[^<]*<img src=[^""].*?>.*?</center>\s*)",
"",
RegexOptions.Singleline | RegexOptions.IgnoreCase);