正则表达式,如何在第 n 个 | 之后删除竖线分隔文件中的换行符?

标签 regex notepad++

我有一个竖线分隔文件,每行 35 个竖线。在第 35 个字段之后有一个预期的换行符。例如:

FirstField|ME|HERE|PHONE|Description|.....|LastField
FirstField|YOu|THERE|PHONE|Description|.....|LastField

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

FirstField|Them|Where|PHONE|This contains a
LineFeed
Or two
or more|.....|LastField

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

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

最佳答案

您可以利用 Notepad++ PythonScript 插件。

See instructions on how to install a working version here并创建以下脚本文件:

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

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

如果您将脚本文件命名为 replace_lbr_inblock.py,您将能够通过选择 Plugins -> Python Script 来调用它 -> 脚本 -> replace_lbr_inblock

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

  • ^ - 行首
  • [^|]* - |
  • 以外的零个或多个字符
  • (?:\|[^|]*){36} - | 的 36 个序列,后跟零个或多个管道
  • $ - 行尾。

之前:

enter image description here

之后:

enter image description here

关于正则表达式,如何在第 n 个 | 之后删除竖线分隔文件中的换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38466757/

相关文章:

javascript - 用于匹配重音字符的正则表达式

settings - Notepad++ 总是在多实例中

regex - Notepad++ 正则表达式: Search for long strings which could contain newlines

javascript - 如何强制正则表达式不分割 JavaScript 中的匹配项?

正则表达式匹配每个字符后的所有内容

regex - 使用正则表达式在 Notepad++ 中删除 CSV 文件中的回车符

notepad++ - 缩进准则突出显示在 Notepad++ 中不起作用

notepad++ - 如何在 Notepad++ 中复制当前行?

删除字符串中空格后的所有内容

php - 如何在 PHP 中使用 RegEx 替换所有十六进制?