Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在html中匹配正则表达式,忽略空格和引号_C#_Regex - Fatal编程技术网

C# 在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> 一些常量文本更多常量文本: 文本的可变部分

我需要从一组HTML文件中找到某个块,然后将其全部删除。这些文件实际上是被黑客攻击的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>
此页面已被访问
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);