正则表达式,如何删除管道分隔文件中的换行符除了第n | |后?

use*_*987 3 regex notepad++

我有一个管道分隔文件,每行有35个管道.在第35个字段后面有一个预期的换行符.例如:

FirstField|ME|HERE|PHONE|Description|.....|LastField
FirstField|YOu|THERE|PHONE|Description|.....|LastField
Run Code Online (Sandbox Code Playgroud)

但是,管道之间的某些数据(例如在描述字段中)包含换行符.例如:

FirstField|Them|Where|PHONE|This contains a
LineFeed
Or two
or more|.....|LastField
Run Code Online (Sandbox Code Playgroud)

问题是,如何删除35个字段中任何一个字段中的换行符,但不在行尾?

(注意:我正在使用Notepad ++进行测试)

Wik*_*żew 5

您可以使用Notepad ++ PythonScript插件.

请参阅有关如何在此处安装工作版本的说明并创建以下脚本文件:

def repl(match):
    return match.group(0).replace("\r\n", "").replace("\n", "").replace("\r", "")

editor.rereplace(r'^[^|]*(?:\|[^|]*){36}$', repl)
Run Code Online (Sandbox Code Playgroud)

如果将脚本文件命名为replace_lbr_inblock.py,则可以通过选择Plugins - > Python Script - > Scripts - > replace_lbr_inblock来调用它.

正则表达式^[^|]*(?:\|[^|]*){36}$匹配

  • ^ - 开始行
  • [^|]* - 除零之外的零个或多个字符 |
  • (?:\|[^|]*){36}- 36个序列的a |后跟零个或多个管道
  • $ - 行结束.

之前:

在此输入图像描述

后:

在此输入图像描述