我需要执行一项任务,即从网页上获取一些html。在网页内有评论,我需要从评论中获取html。我希望下面的例子可以提供帮助。我需要在c#中完成它。
<!--get html from here-->
<div><p>some text in a tag</p></div>
<!--get html from here-->
我希望它返回
<div><p>some text in a tag</p></div>
我该怎么做?
答案 0 :(得分:2)
如何找到第一个分隔符的索引,第二个分隔符的索引以及“裁剪”其间的字符串?听起来更简单,可能会有效。
答案 1 :(得分:2)
正则表达不适合HTML。如果你确实想要处理HTML的所有荣耀,请考虑HtmlAgilityPack,如本问题所述。 Looking for C# HTML parser
可能有效的最简单的事情是:
string pageBuffer=...;
string wrapping="<!--get html from here-->";
int firstHitIndex=pageBuffer.IndexOf(wrapping) + wrapping.Length;
return pageBuffer.Substring( firstHitIndex, pageBuffer.IndexOf( wrapping, firstHitIndex) - firstHitIndex));
(错误检查两个标记都存在)
根据您的上下文,WatiN可能很有用(如果您在服务器中,但是如果您在客户端,并且做一些可以从完整的HTML解析中受益的更有趣的事情,那就不是很有用了。)
答案 2 :(得分:2)
如果所有实例的格式都相似,则表达式为
<!--[^(-->)]*-->(.*)<!--[^(-->)]*-->
将检索两条评论之间的所有内容。如果您的评论中的“从此处获取html”文本已明确定义,则可以更具体:
<!--get html from here-->(.*)<!--get html from here-->
当您对字符串运行RegEx时,Groups集合将在注释之间包含HTML。
答案 3 :(得分:0)
我遇到了剥离HTML评论的要求。我一直在寻找一些基于正则表达式的解决方案,以便它可以开箱即用,提供自由风格的评论,并在其下面有任何类型的字符。
我试过它,它完美适用于单行,多行,带有Unicode字符和符号的注释。
<!--[\u0000-\u2C7F]*?-->