我有一个HTML表格字符串。这个HTML大部分来自FrontPage,因此格式大多不佳。以下是一个快速示例。
<b>Table 1</b>
<table class='class1'>
<tr>
<td>
<p>Procedure Name</td>
<td>
<p>Procedure</td>
</tr>
</table>
<p><b>Table 2</b></p>
<table class='class2'>
<tr>
<td>
<p>Procedure Name</td>
<td>
<p>Procedure</td>
</tr>
</table>
<p> Some text is here</p>
据我所知,FrontPage会自动在每个新单元格中添加一个
<p>
标记。我想删除表格内部的那些
<p>
标记,但保留表格外部的标记。到目前为止,我尝试了两种方法:第一种方法是使用单个正则表达式来捕获表格中的每个
<p>
标记,然后使用Regex.Replace()
将其删除。然而,我从未成功地得到正确的正则表达式。(我知道用正则表达式解析HTML很糟糕。我认为数据足够简单,可以应用正则表达式来处理它)。我可以使用这个正则表达式轻松获取每个表格中的所有内容:
<table.*?>(.*?)</table>
然后我想只获取<p>
标记,于是我写了这个: (?<=<table.*?>)(<p>)(?=</table>)
。但是这并没有匹配到任何内容。(显然,.NET允许在回溯中使用量词。至少在使用http://regexhero.net/tester/时给我的印象是这样的)有什么办法可以修改这个正则表达式以仅捕获我需要的内容吗?
第二种方法是将表格内容仅捕获到一个字符串中,然后使用
String.Replace()
删除<p>
标记。我正在使用以下代码来捕获匹配项:MatchCollection tablematch = Regex.Matches(htmlSource, @"<table.*?>(.*?)</table>", RegexOptions.Singleline);
htmlSource
是一个包含整个HTML页面的字符串,这个变量将在处理后发送回客户端。我只想从 htmlSource
中删除我需要删除的内容。
我如何使用MatchCollection来删除 <p>
标记,然后将更新后的表格发送回 htmlSource
?
谢谢
MatchCollection
来查找所有内部的<p>
标签,但是替换它们可能无法通过这种方式完成。 - user557597