我想使用 Notepad ++ 来删除重复行开头的行。例如,我有一个分号分隔文件,如下所示:
string at the beginning of line 1;second string line 1; final string line1;
string at the beginning of line 2;second string line 2; final string line2;
string at the beginning of line 1;second string line 3; final string line3;
string at the beginning of line 1;second string line 4; final string line4;
我想删除第三行和第四行,因为它们与第一行具有相同的第一个子串并获得以下结果:
string at the beginning of line 1;second string line 1; final string line1;
string at the beginning of line 2;second string line 2; final string line2;
答案 0 :(得分:1)
您可以尝试使用以下正则表达式:
^(([^;]*;).*\R(?:.*\R)*?)\2.*
或者
^(([^;]*;).*\R(?:.*\R)*?)\2.*(?:$|\R)
并替换为$1
。
我们的想法是在包含非分号字符(最多;
([^;]*;
)的行的开头找到并捕获文本,然后匹配行的其余部分(使用{{ 1}}),然后是0行或更多行(.*\R
),直到以第2组中捕获的文本开头的行,将其与结束匹配并捕获到我们稍后可以使用的第二个组。
缺点是您必须多次单击“全部替换”,直到找不到匹配项。
感谢@nhahtdh,他注意到我以前的(?:.*\R)*?
正则表达式中存在一个可以过度使用的错误。