Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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# 正则表达式-删除最后一个<;p>;HTML字符串的段_C#_Regex_Html Parsing - Fatal编程技术网

C# 正则表达式-删除最后一个<;p>;HTML字符串的段

C# 正则表达式-删除最后一个<;p>;HTML字符串的段,c#,regex,html-parsing,C#,Regex,Html Parsing,我有一个从RSS提要中提取的HTML结构,我需要删除其中的一部分,但它不是流的独立部分 所以我有 <p>Some Html... </p> <br /> <p>The p section I want to remove</p> 一些Html 我要删除的p部分 有一个正则表达式模式可以做到这一点吗?找到给定字符串的最后一段并切掉它?我正在使用C#表示正则表达式。您确定要使用正则表达式表示吗?事实上,我认为你应该在需要的时候才使用它

我有一个从RSS提要中提取的HTML结构,我需要删除其中的一部分,但它不是流的独立部分

所以我有

<p>Some Html... </p>
<br />
<p>The p section I want to remove</p>
一些Html


我要删除的p部分


有一个正则表达式模式可以做到这一点吗?找到给定字符串的最后一段并切掉它?我正在使用C#表示正则表达式。

您确定要使用正则表达式表示吗?事实上,我认为你应该在需要的时候才使用它们

<>你为什么不考虑一些东西(假设HTML格式很好,没有嵌套段落):

string html=GetRSS();
int pStartIndex=html.LastIndexOf(“”);
int pEndIndex=html.LastIndexOf(“

”); string result=html.Remove(psartindex,pEndIndex-psartindex+4);

P> >你可以考虑使用一些更先进的(也许合适的),比如HTML敏捷包(或者如果你使用的是坏的HTML格式),集成的.NETXML解析器(<强>编辑:),如SvcKS说,如果你选择这个解决方案,请确保你使用的HTML也是有效的XML。.

您确定要为此使用正则表达式吗?事实上,我认为你应该在需要的时候才使用它们

<>你为什么不考虑一些东西(假设HTML格式很好,没有嵌套段落):

string html=GetRSS();
int pStartIndex=html.LastIndexOf(“”);
int pEndIndex=html.LastIndexOf(“

”); string result=html.Remove(psartindex,pEndIndex-psartindex+4);

P> >你可以考虑使用一些更先进的(也许合适的),比如HTML敏捷包(或者如果你使用的是坏的HTML格式),集成的.NETXML解析器(<强>编辑:),如SvcKS说,如果你选择这个解决方案,请确保你使用的HTML也是有效的XML。.

您可以使用此正则表达式替换上次出现的
标记

// Begin with '<p>' followed by any character and then end with '</p>'
var pattern = @"<p>.*</p>"; 
var regex = new Regex(pattern);

var sourceString = @"<p>Some Html... </p>\n<br />\n<p>The p section I want to remove</p>";

var matchCollection = regex.Matches(sourceString);
if(matchCollection.Count > 0)
{
    sourceString.Replace(matchCollection[matchCollection.Count - 1].Value, string.Empty);
}
//以“”开头,后跟任何字符,然后以“

”结尾 变量模式=@“*

”; var regex=新的regex(模式); var sourceString=@“一些Html…

\n
\n我要删除的p部分

”; var matchCollection=regex.Matches(sourceString); 如果(matchCollection.Count>0) { sourceString.Replace(matchCollection[matchCollection.Count-1]。值,string.Empty); }
您可以使用此正则表达式替换上次出现的
标记

// Begin with '<p>' followed by any character and then end with '</p>'
var pattern = @"<p>.*</p>"; 
var regex = new Regex(pattern);

var sourceString = @"<p>Some Html... </p>\n<br />\n<p>The p section I want to remove</p>";

var matchCollection = regex.Matches(sourceString);
if(matchCollection.Count > 0)
{
    sourceString.Replace(matchCollection[matchCollection.Count - 1].Value, string.Empty);
}
//以“”开头,后跟任何字符,然后以“

”结尾 变量模式=@“*

”; var regex=新的regex(模式); var sourceString=@“一些Html…

\n
\n我要删除的p部分

”; var matchCollection=regex.Matches(sourceString); 如果(matchCollection.Count>0) { sourceString.Replace(matchCollection[matchCollection.Count-1]。值,string.Empty); }
XML解析器甚至对格式良好且有效的HTML也没有帮助。HTML不是XML。我同意你的观点,但我刚刚向他展示了如何面对这个问题。实际上,我认为在这种情况下没有一个正确的解决方案,即使你说HTML不是XML是正确的,在他的例子中,XML解析器可能工作得很好。我不能忍受按照假设工作,我更喜欢使用符合我的要求并且不会导致其他奇怪问题的东西。但这正是使用HTML XML解析器会导致的问题——稍后会出现一些奇怪的问题。如果您真的在使用HTML(而不是XHTML),并且不完全确定HTML是否也是有效的XML,那么您不应该使用XML解析器来处理它。我明白了,但我想当然地认为他已经知道他在使用哪种代码。我会更新我的答案,谢谢:)是的,这非常有效。是的,我想用正则表达式。这是一个简单的项目,几个月内不会上线。我只需要让它暂时起作用。XML解析器甚至对格式良好且有效的HTML也帮不了你。HTML不是XML。我同意你的观点,但我刚刚向他展示了如何面对这个问题。实际上,我认为在这种情况下没有一个正确的解决方案,即使你说HTML不是XML是正确的,在他的例子中,XML解析器可能工作得很好。我不能忍受按照假设工作,我更喜欢使用符合我的要求并且不会导致其他奇怪问题的东西。但这正是使用HTML XML解析器会导致的问题——稍后会出现一些奇怪的问题。如果您真的在使用HTML(而不是XHTML),并且不完全确定HTML是否也是有效的XML,那么您不应该使用XML解析器来处理它。我明白了,但我想当然地认为他已经知道他在使用哪种代码。我会更新我的答案,谢谢:)是的,这非常有效。是的,我想用正则表达式。这是一个简单的项目,几个月内不会上线。我只需要让它暂时起作用。