【问题标题】:Need data inside the Body tag, but no any other tag需要 Body 标签内的数据,但不需要任何其他标签
【发布时间】:2016-10-07 19:42:10
【问题描述】:

您好,我有 html 格式的简历, 我正在使用 StreamReader 读取文件,并且正在使用以下方法删除标签。

using (StreamReader sr = new StreamReader("\\Myfile.html"))
                {
                    String line = sr.ReadToEnd();
                    string jj = Regex.Replace(line, "<.*?>", String.Empty);
    }

它的工作该死的酷

但是根据我的要求,我只需要 body 标签内的数据。 但是没有body标签,里面也没有标签。

【问题讨论】:

  • 试试&lt;body.*?&gt; 而不是&lt;.*?&gt; - 还是有点不清楚你在追求什么。
  • 跳过行直到找到&lt;body&gt;,然后执行你的代码直到找到&lt;/body&gt;
  • 试试string jj = Regex.Replace(line.Substring(line.IndexOf("&lt;body&gt;", StringComparison.CurrentCultureIgnoreCase)), "&lt;[^&gt;]+&gt;", String.Empty);
  • 检查我的答案,如果有什么不清楚的地方告诉我。
  • @WiktorStribiżew 为我工作,你 r osm

标签: c# html regex streamreader


【解决方案1】:

不要将正则表达式用于 HTML/XML 解析。使用 Html/Xml 解析器。这里很好地解释了为什么你不应该使用它。

RegEx match open tags except XHTML self-contained tags

Can you provide some examples of why it is hard to parse XML and HTML with a regex?

您可以使用 HTML 敏捷包将字符串加载到 Html 文档中

这里是如何做到这一点的小例子:

public string ReplacePElement() 
{
    HtmlDocument doc = new HtmlDocument();
    doc.Load(htmlFile);

    foreach(HtmlNode p in doc.DocumentNode.SelectNodes("body"))
    {

    }

    return doc.DocumentNode.OuterHtml;
} 

【讨论】:

猜你喜欢
  • 2020-01-30
  • 2016-05-10
  • 2014-10-09
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-07
相关资源
最近更新 更多