C# 正则表达式-删除最后一个<;p>;HTML字符串的段
我有一个从RSS提要中提取的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#表示正则表达式。您确定要使用正则表达式表示吗?事实上,我认为你应该在需要的时候才使用它
<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解析器来处理它。我明白了,但我想当然地认为他已经知道他在使用哪种代码。我会更新我的答案,谢谢:)是的,这非常有效。是的,我想用正则表达式。这是一个简单的项目,几个月内不会上线。我只需要让它暂时起作用。