我有这些行,我需要删除以“/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行。
答案 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
但要注意。*这是无意的副作用。正则表达式应始终尽可能具体,尤其是在使用它们删除时。