在 Notepad++ 中用逗号连接换行符和删除空行到换行符

Joining line breaks with commas and Removing empty lines to line breaks in Notepade++

我有一个这样的文本文件...

$index 57320   
$title The vertex-cover polynomial of a graph  
$time 1988  
$abstract In this paper we define the vertex-cover...  

$index 57321   
$title Locating stations on rapid transit lines  
$time 1978  

$index 57322   
$title Fast heuristics for large scale covering-location problems  
$time 1998  
$abstract We propose fast heuristics for large scale...  

$index 57323   
$title Efficient vector processing on dataflow supercomputer SIGMA-1  
$time 2001  
$abstract Efficiency in vector handling is the key to obtaining high...  

我想将每个 linebreak 转换为 comma,同时将每个 emptyline 转换为 linebreak。而示例文本的输出应该是这样的(使用 "dots"... 缩短的文本):

$index 57320,$title The vertex-cover...,$time 1988,$abstract In this paper...  
$index 57321,$title Locating stations on...,$time 1978  
$index 57322,$title Fast heuristics for...,$time 1998,$abstract We propose fast...  
$index 57323,$title Efficient vector...,$time 2001,$abstract Efficiency in...  

我尝试将 \r\n 替换为 , 并且它有效,但是如何同时应用将 linebreaks 转换为 commaemptyline 的两种操作用作 linebreaks 以获得所需的输出。

这方面请帮忙
谢谢!

将查找和替换设置为正则表达式模式。

查找:

([^\r\n]+)\r\n

替换为:

,

你可以找到这个,去掉每行尾随的 space:

([^\r\n]+?) *\r\n

您需要分两步完成。首先,用逗号替换所有换行符,但前提是它们不在行的开头,并且只有 $ 字符后跟:

(?<!^)[ \t]*\r?\n(?=$)

将所有这些匹配项替换为 ,。请注意 [ \t]* 部分用于清理每行末尾的空格 - 我在您发布的示例中发现了这一点;如果实际上不存在,则可以省略该部分。测试一下 live on regex101.com.

然后,将所有 (\r?\n){2,} 替换为