【问题标题】:Regex for merging lines if new line does not start with hyphen in Notepad++如果 Notepad++ 中的新行不以连字符开头,则用于合并行的正则表达式
【发布时间】:2016-11-05 09:41:24
【问题描述】:

我正在将一本书从 pdf 转换为记事本文本。在 pdf 中,行长是固定的,结果一半的句子被转移到文本输出中的新行。

我需要一个用于 notepad++ 的正则表达式,它执行以下操作:

如果新行不是以- 开头,则将其合并到上一行并执行(空白)。

任何其他使文本正确的选项都将被接受。

【问题讨论】:

  • 这将删除所有正确的新行,例如“-嘿,这是一个角色演讲”
  • 您可能正在寻找lookahead\R(?!-) 请始终包含您尝试/失败的正则表达式和正确的输入示例,以便能够重现您的问题并找到问题。

标签: regex pdf replace notepad++ pdftotext


【解决方案1】:

说明

\r?\n(?!-)

替换为: _ 一个空格,而不是此处显示的下划线。

** 要更好地查看图像,只需右键单击图像并选择在新窗口中查看

此正则表达式将执行以下操作:

  • 查找后面没有- 的换行符
  • 删除换行符,然后将行合并在一起

示例

现场演示

https://regex101.com/r/jE2mI1/1

示例文本

-line 1
line 2
line 3
-line a
line b
line c

更换后

-line 1 line 2 line 3
-line a line b line c

说明

NODE                     EXPLANATION
----------------------------------------------------------------------
  \r?                      '\r' (carriage return) (optional (matching
                           the most amount possible))
----------------------------------------------------------------------
  \n                       '\n' (newline)
----------------------------------------------------------------------
  (?!                      look ahead to see if there is not:
----------------------------------------------------------------------
    -                        '-'
----------------------------------------------------------------------
  )                        end of look-ahead
----------------------------------------------------------------------

【讨论】:

  • 你能从你的日志中发布一些示例文本吗?
  • 这个正则表达式不起作用。我按 Ctrl + H add \r?\n(?!-) i Find what,添加空格替换为,结果是所有行都变成了一行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 2014-10-28
  • 1970-01-01
相关资源
最近更新 更多