将某些换行符替换为相当于在键盘 NotePad++ Regex 上按删除键

Replace Certain Line Breaks with Equivalent of Pressing delete key on Keyboard NotePad++ Regex

我正在使用 Notepad++ 查找和替换,我有正则表达式来查找 [^|]\r,它将找到以 8778 开头的行的结尾。

8778|44523|0||TENNESSEE|ADMINISTRATION||ROLL 169 BATCH 8|1947-09-22|0|OnBase 
See Also 15990TT|

我想基本上将该行与其下面的行合并,所以它变成了:

8778|44523|0||TENNESSEE|ADMINISTRATION||ROLL 169 BATCH 8|1947-09-22|0|OnBase See Also 15990TT|

我试过将替换为空白 space,但它抓住了该行的最后一个字符(在本例中为 e)并将其替换为 space,因此它使 space =14=]

8778|44523|0||TENNESSEE|ADMINISTRATION||ROLL 169 BATCH 8|1947-09-22|0|OnBas  
See Also 15990TT|

有没有什么方法可以使它基本上合并两条线?

问题是您正在使用 [^|] 来匹配回车 return 之前的任何非竖线字符,这在替换时会删除该字符(因此您会丢失e).

如果您必须只匹配非管道字符后的回车 return,请捕获前面的字符 ([^|])\r$,然后使用 </code> 将其放回替换中。 </p> <p>您的正则表达式中还遗漏了一个 <code>\n,这就是替换没有连接两行的原因。所以你的搜索应该是 ([^|])\r\n$ 而你的替换应该是 .

\r只匹配一个回车符return,要匹配一个换行符,你需要\R匹配任何换行符序列。

要在替换后保留模式的一部分,请用括号捕获该部分,然后使用对该组的反向引用。

所以你可以使用

([^|\r])\R

替换为</code>。或者如果您需要附加 space.</p>,则使用 <code>

详情

  • ([^|\r]) - 捕获组 1(</code> 是从替换模式引用组值的反向引用):除 <code>| 和 CR[=40= 之外的任何字符]
  • \R - 任何换行字符序列,LF、CR 或 CRLF。

查看 regex demo 和带有设置的 Notepad++ 演示:

查找

(\r\n)+

对于“替换”- 不要放入任何东西(甚至 space)