正则表达式删除多个匹配查询的行

时间:2012-10-10 03:08:11

标签: regex notepad++ replace

我有这些行,我需要删除以“/index.html”结尾的行(从“< a”标记开始(前面两行),并保留所有其他行。

示例:

<a href="http://site.com/dir/file.html">
/dir/file.html</a>: 
../../../index.html<br>
<a href="http://site.com/dir/file2.html">
/dir/file2.html</a>: 
../../../page.html<br>
<a href="http://site.com/dir/name.html">
/dir/name.html</a>: 
../../../index.html<br>
<a href="http://site.com/dir/any-link_.html">
/dir/any-link_.html</a>: 
../../../file-name.html<br>

输出:

<a href="http://site.com/dir/file2.html">
/dir/file2.html</a>: 
../../../page.html<br>
<a href="http://site.com/dir/any-link_.html">
/dir/any-link_.html</a>: 
../../../file-name.html<br>

因此正则表达式应删除“/index.html”之前的所有内容,直到&lt; a(前面两行),并留下其他行。

我在Notepad ++中尝试了类似:^。/ index.html,但它只删除了带有“/index.html”的行,我不知道如何从&lt; a前面有2行。

1 个答案:

答案 0 :(得分:1)

<a href="http://site\.com([^"]*\.html)">\s*\1</a>:\s*.*index.html<br>\s*

按字面匹配<a href="http:site.com,然后是路径名,然后是标记的结尾和所有空格(包括新行),直到文件名的重复(\1),然后是关闭标记,冒号,更多空格(再次包括换行符),然后是index.html<br>后面的任意数量的字符(除了新行),然后是下一行之前的所有空格(包括,再次,换行)

可能缩短为

.*\n.*\n.*index.html<br>\n

但要注意。*这是无意的副作用。正则表达式应始终尽可能具体,尤其是在使用它们删除时。