2011-07-13 72 views
2

好吧,问题是我有HTML字符串。我需要找到这样一个特定的格式:需要帮助解析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> 

回答

2

您可以尝试正则表达式:@"<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); 
+0

嗨,并感谢询问正则表达式运作良好,但只带来我的第一场比赛,我试图改变正则表达式加入'\ b'来获得所有的行,但它不起作用 – Jorge

2

我不喜欢使用正则表达式这样的东西。

我已经写了一个免费的HTML tag parser,你可以按原样使用,修改以适应你的需求,或者只是作为一个指导你如何自己处理这个问题。

0

对于像这样的小东西,我更喜欢使用正则表达式。不知道C#的语法是什么,但表情会是这个样子:

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

乔纳森·伍德的使用HTML标记解析器的建议是一个好主意太,尤其是如果你会做很多分析的。

0

正则表达式已被证明是解析HTML的不好解决方案。 HTML Agility Pack正是你完成这项任务所需要的。