需要帮助解析HTML标签之间的文本
本文关键字:标签 之间 文本 HTML 帮助 | 更新日期: 2023-09-27 18:02:04
好的,问题是我有HTML字符串。我需要找到一个特定的格式,像这样:
<span class="fieldText">some text</span>
中,我需要提取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>
您可以尝试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敏捷包正是你所需要的。