需要帮助解析HTML标签之间的文本

本文关键字:标签 之间 文本 HTML 帮助 | 更新日期: 2023-09-27 18:02:04

好的,问题是我有HTML字符串。我需要找到一个特定的格式,像这样:

<span class="fieldText">some text</span>

在该HTML的

中,我需要提取some text并将其保存到列表中。如何才能实现我的目标。

注意,文本可以像这样显示

<p>
    Central: 
<span class="fieldText">Central_Local</span><br>Area Resolutoria:  
<span class="fieldText">Area_Resolutoria</span><br>VPI:  
<span class="fieldText">VIP</span><br>Ciudad: <span class="fieldText">Ciudad</span>   <br>Estado:  <span class="fieldText">Estado</span><br>Region  <span class="fieldText">Region</span>    
</p>

需要帮助解析HTML标签之间的文本

您可以尝试regex: @"<span .*?>(.*?)</span>"如果您将它与捕获结合使用,您可以使用@"^(.*?<span .*?>(.*?)</span>.*?)+$"获得整个列表。

但事实是你不应该对XML或HTML使用正则表达式——正如其他人已经提到的那样,有很多解析器。

            string s = @"
<p>
    Central: 
<span class=""fieldText"">Central_Local</span><br>Area Resolutoria:  
<span class=""fieldText"">Area_Resolutoria</span><br>VPI:  
<span class=""fieldText"">VIP</span><br>Ciudad: <span class=""fieldText"">Ciudad</span>   <br>Estado:  <span class=""fieldText"">Estado</span><br>Region  <span class=""fieldText"">Region</span>    
</p>";
            Match m = Regex.Match(s, @"^(.*?<span .*?>(.*?)</span>.*?)+$", RegexOptions.Singleline);
            foreach (var capture in m.Groups[2].Captures)
                Console.WriteLine(capture);

我不喜欢在这种情况下使用正则表达式。

我已经编写了一个免费的HTML标签解析器,您可以按原样使用,修改以满足您的需要,或者只是作为您自己如何处理这个问题的指南。

你试过HtmlAgilityPack吗?

对于这样的小事情,我更喜欢使用正则表达式。不确定c#语法是什么,但表达式看起来像这样:

|<span class="fieldText">(.+)</span>|

Jonathan Wood关于使用HTML标签解析器的建议也是一个好主意,特别是如果你要做大量的解析。

Regex已被证明是解析HTML的糟糕解决方案。HTML敏捷包正是你所需要的。