我在Notepad ++中有一个文本文档,其中信息按行分隔,但除了每七行之外都要删除所有内容。此行始终与模式(\d{4} :.*?\r\n)
匹配。
如何删除与此模式不匹配的所有内容,以便我将每个第七行分隔为\r\n
?
答案 0 :(得分:3)
你可以试试:
^(?!\d{4} :)[\s\S]*?(?=\r\n\d{4} :)
[注意,我无法将\r
放在那里因为我无法以某种方式在输入框中插入回车符...]
^
是行锚点的开头,与行的开头匹配。
(?!\d{4} :)
是一个负向前瞻,只有在行的开头没有\d{4} :
(位置由^
表示)时才会使整个正则表达式匹配。
[\s\S]*?
是一个匹配任何和所有角色的角色类。量词是一个惰性量词,会导致匹配尽快停止(这取决于以下内容)
(?=\r\n\d{4} :)
是一个积极的前瞻,只有在前方有\r\n\d{4} :
时才会匹配。
如果我理解你的问题,这将是你正在寻找的。除了第7行之外的所有行都被删除,并且在每个第7行之间只留下一个空行。
答案 1 :(得分:1)
打开搜索对话框,然后选择标记标签。在查找内容字段中输入搜索字符串以查找要保留的行。确保选中书签行和正则表达式,然后点击全部标记。接下来访问menu => 搜索 => 书签 => 删除未标记的行。
问题是要保留的行与(\d{4} :.*?\r\n)
匹配。由于未使用捕获,因此不需要捕获括号(
和)
。搜索\r\n
通常可以重写为搜索$
,即行尾。您的搜索模式只是寻找早期项目之后的第一个行尾。搜索可能会缩短为\d{4} :
。