正则表达式在Notepad ++

时间:2015-12-29 03:48:52

标签: regex notepad++

我对正则表达式很新。

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

我设法提出^([^\|]*\|){22}[^\|]*$来确定完整记录。 如何替换这些字符串中的换行符(\ n)以将所有换行符折叠成一个衬里?

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

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

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

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

你应该用

替换
\1,

除新行字符外,其他行将添加逗号。

如果您将光标放在文件的开头并替换all,它将正常工作,前提是合并的行将形成实线(超过21个管道)。在上半部分与第二部分合并之后,整行不再匹配正则表达式并且替换继续进行。

更换前:

enter image description here

更换后:

enter image description here

在Notepad ++ 6.8.8中测试。