【问题标题】:Regex: replace newline except the ones with a dot正则表达式:替换换行符,除了带点的换行符
【发布时间】:2015-10-07 13:31:08
【问题描述】:

提前感谢您提供的任何帮助

我有这样的文字:

Bla bla bla bl[CR][LF]
a bla bla bla[CR][LF]
bla bla.[CR][LF]
Bla bla bla bla bl[CR][LF]
...and so on

我想替换所有新行,除了最后一个字符为点的行。

这就是我想要的:

Bla bla bla bla bla bla bla bla bla.[CR][LF]
Bla bla bla bla bla.[CR][LF]
...and so on

我尝试使用支持 RegEx 的 Notepad++,使用搜索和替换选项卡 (Ctrl+H)。代码如下:

Search:   [^.\r\n]\r\n
Replace field had just a space.

它有效,但它会截断每一行的最后一个字符。

Bla bla bla bla bla bla bla bla bl.[CR][LF]
Bla bla bla bla bl.[CR][LF]

我是 RegEx 新手,最好的方法是什么?

【问题讨论】:

  • 您希望将已删除的 CRLF 替换为空或空白吗?所需的输出说明了两者(第一个输入行末尾的 bl 在第二个输入行的开头连接到 a,但第二个输入行末尾的 blabla 分开在第三个开头有一个空格)。您可以有任何一种行为,但如果没有详细说明何时替换为空字符串以及何时需要空白,则不能同时具有这两种行为。

标签: regex replace notepad++ newline


【解决方案1】:

在搜索字段中使用此正则表达式:(?<!\.)\r\n。这意味着找到任何前面没有.\r\n

您的正则表达式意味着找到任何三个字符,其中第一个不是. \r\n,最后两个是\r\n。但是当你去替换时,它也会替换第一个字符。我发布的正则表达式将非句点检查为零长度,因此它不会替换该字符。

【讨论】:

    猜你喜欢
    • 2014-03-10
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多