正则表达式替换 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 中测试。
我对正则表达式很陌生。
我有一个包含自由文本数据的竖线分隔文本文件。 我需要找到一种方法,在 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 中测试。