0

我有这些行,我需要删除以“/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”之前的所有内容,直到 < a(它之前的两行),并将其他行留在后面。

我正在尝试类似:记事本++中的^./index.html,但它只删除具有“/index.html”的行,我不知道如何从它之前的<a开始删除2行.

4

1 回答 1

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

但要小心 .* ,它是意想不到的副作用。正则表达式应始终尽可能具体,尤其是在使用它们进行删除时。

于 2012-10-10T03:36:22.967 回答