2010-10-03 73 views
0

我需要解析HTML文件并提取NeedThis *用C#字符串/净,示例代码:正则表达式找到html标签内容

<tr class="class"> 
    <td style="width: 120px"> 
     <a href="NeedThis1">NeedThis2</a> 
    </td> 
    <td style="width: 120px"> 
     <a href="NeedThis3"> 
      NeedThis4</a> 
    </td> 
    <td style="width: 30%"> 
     NeedThis5 
    </td> 
    <td> 
     NeedThis6 
    </td> 
    <td style="width: 120px"> 
     NeedThis7 
    </td> 
</tr> 

我知道一个HTML解析器应该是更好地在这里,但我需要的是提取这些文本,这只是一个临时帮手工具...

任何人都可以帮助我这个?

谢谢!

+4

我想引用这个问题的第一个答案:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Soravux 2010-10-03 04:12:14

+1

我已经看到我只是不想使用IndexOf ...正如我所说,这是一个临时帮手工具,而不是最终产品...我需要从大约50k文件中提取这些字符串,这些文件存储在我的本地硬盘和在数据库中插入,一旦完成,按Ctrl +删除工具=) – 2010-10-03 04:14:16

+1

@Soravux:我们认为都一样 - 我正要这样做,然后我看到:-) – Cameron 2010-10-03 04:14:39

回答

0

您似乎已经回答了您自己的问题。 You should use a parser。但是,如果你不能,你可以使用RE NeedThis.*

当然,如果你想要这些字符串的任何上下文,你应该只使用一个解析器。

+0

实际上,NeedThis可以是任何arbitraty串... – 2010-10-03 04:15:19

+1

在这种情况下,用户**解析器** – JoshD 2010-10-03 04:21:33

+1

@HansW¯¯很高兴见到你证明,程序员仍然一样自然以往任何时候都好点子抵抗力。 – jball 2010-10-03 05:27:17

2

如果你确信你HTML是有效的,你可以使用LINQ到其他XML您使用的是像HTML Agility Pack

2

解析器不要紧,不管你是这样做了一次性的或更好为“完成的项目”。您的任务不是文本提取,也不是正则表达式可以有效执行的操作。您正在查找的数据取决于HTML的结构。你的任务是解析HTML。当您的任务解析HTML时,请使用HTML解析器。这并不困难。实际上,它比写一堆你需要的正则表达式更容易。

0

汉斯,你可以通过使用正则表达式可能不是做你想做的事情的最好方法其他答案看,但因为我需要练习我的正则表达式反正我继续以防万一做出一个你想要试验。这只会产生NeedThis2,但它应该让您了解如何在适当的解决方案时创建自己的RegEx。

<a href="NeedThis1">NeedThis2</a> 

正则表达式来赶NeedThis2

(?:<a[^<a]+?>)(\S)*(?:<[^<]+?a>) 

非常讨厌吧? :)