我有一个非常大的HTML文件,其中包含安全扫描的结果,我需要从文档中提取无用的信息。我需要提取的一个例子看起来像这样:
<tr>
<td width="20%" valign="top" class="classcell0"><span class="classtext" style="color: #ffffff; font-weight: bold !important;">Info</span></td>
<td width="10%" valign="top" class="classcell"> <a href="http://www.nessus.org/plugins/index.php?view=single&id=10395" target="_blank"> 10395</a>
</td>
<td width="70%" valign="top" class="classcell"><span class="classtext" style="color: #263645; font-weight: normal;">Microsoft Windows SMB Shares Enumeration</span></td>
</tr>
编辑后,应删除上面的文字。由于变化,我无法进行标准查找。以下是需要从文档中删除的内容的另一个示例:
<tr>
<td width="20%" valign="top" class="classcell0"><span class="classtext" style="color: #ffffff; font-weight: bold !important;">Info</span></td>
<td width="10%" valign="top" class="classcell"> <a href="http://www.nessus.org/plugins/index.php?view=single&id=11219" target="_blank"> 11219</a>
</td>
<td width="70%" valign="top" class="classcell"><span class="classtext" style="color: #263645; font-weight: normal;">Nessus SYN scanner</span></td>
</tr>
我需要将ID号10395视为变量,但长度保持不变。此外,&#34; Microsoft Windows SMB共享枚举&#34;需要被视为一个变量,因为它在整个文档中都会发生变化。
我已经尝试过这样的东西来代替,但我想我完全错过了这个标记。
<td width="10%" valign="top" class="classcell"> <a href="http://www.nessus.org/plugins/index.php?view=single&id=\1\1\1\1\1" target="_blank"> \1\1\1\1\1</a>
也许我应该完全使用不同的工具?
答案 0 :(得分:1)
正则表达式从最复杂到更复杂,但所有这些都完成了工作:
<a.*>.*\d.*</a>
<a.*>.*\d{5}.*</a>
<a.*id=\d{5}.*>.*\d{5}.*</a>
免责声明: be careful。我不能用正则表达式解析html。
答案 1 :(得分:1)
我假设多次重复\1
你的意思是单个角色的占位符,但这不对。你想要达到的目标是这样的:
<td width="10%" valign="top" class="classcell"> <a href="http://www.nessus.org/plugins/index.php?view=single&id=(\d+)" target="_blank"> \1</a>
匹配整整6行:
<tr>\s*<td width="20%" valign="top" class="classcell0"><span class="classtext" style="color: #ffffff; font-weight: bold !important;">Info</span></td>\s*<td width="10%" valign="top" class="classcell"> <a href="http://www\.nessus\.org/plugins/index\.php\?view=single&id=(\d+)" target="_blank"> \1</a>\s*</td>\s*<td width="70%" valign="top" class="classcell"><span class="classtext" style="color: #263645; font-weight: normal;">.*?</span></td>\s*</tr>
然后你可以用空字符串替换它。