使用正则表达式

时间:2017-06-16 17:03:59

标签: html regex replace notepad++

我有一个非常大的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&amp;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&amp;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&amp;id=\1\1\1\1\1" target="_blank"> \1\1\1\1\1</a>

也许我应该完全使用不同的工具?

2 个答案:

答案 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&amp;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&amp;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>

然后你可以用空字符串替换它。