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

Cie*_*iel 0 c# regex html-parsing

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

所以我有

<p>Some Html... </p>
<br />
<p>The p section I want to remove</p>
Run Code Online (Sandbox Code Playgroud)

是否有正则表达式模式可以做到这一点?找到<p>给定字符串的最后一段并将其删除?我正在使用C#作为正则表达式.

as-*_*cii 5

你确定要使用正则表达式吗?实际上我认为你应该只在你需要的时候使用它们.

为什么不考虑类似的事情(假设HTML格式正确并且没有嵌套段落):

string html = GetRSS();
int pStartIndex = html.LastIndexOf("<p>");
int pEndIndex = html.LastIndexOf("</p>");
string result = html.Remove(pStartIndex, pEndIndex - pStartIndex + 4);
Run Code Online (Sandbox Code Playgroud)

或者你可以考虑使用更高级(也许是合适的)像HTML Agility Pack或(更糟糕的是,如果你正在使用糟糕的html)集成的.NET XML解析器(编辑: 正如svicks所说,如果你选择这个解决方案,请确保您正在使用HTML也是有效的XML).

  • 即使格式良好且有效的HTML,XML解析器也无法帮助您.HTML*不是*XML. (2认同)