正则表达式替换 Notepad++ 中管道之间的换行符

Regex to replace newline in between pipes in Notepad++

我对正则表达式很陌生。

我有一个包含自由文本数据的竖线分隔文本文件。 我需要找到一种方法,在 Notepad++ 中用逗号替换自由文本字段中的换行符。 固定数量为 23 个字段。

我想出了 ^([^\|]*\|){22}[^\|]*$ 来识别完整记录。 如何替换这些字符串中的换行符 (\n) 以将所有内容折叠成一行?

regex101.com 中的数据样本:https://regex101.com/r/aY4jF3/2 以 1a 和 1c 开头的记录需要折叠成一行,在字段 13 的值 ( ...|1,3|... ) 之间用逗号分隔

提前致谢!

您可以用于替换的正则表达式是:

(^(?:[^\|\n]*\|){1,21}[^\|\n]+)[\r\n]{1,2}

第一组 ((^(?:[^\|\n]*\|){1,21}[^\|\n]+)) 捕获最多包含 21 个竖线字符的行(因此未满的行)。这是一个捕获组,因为需要更换它。其余匹配换行符。

你应该替换为

,

这将取除换行符之外的行并添加一个逗号。

如果将光标放在文件的开头并全部替换,只要合并的行将形成完整的行(超过 21 个管道),它就会正常工作。上半部分与下半部分合并后,整行不再与正则表达式匹配,替换继续进行。

更换前:

更换后:

已在 Notepad++ 6.8.8 中测试。