用于删除特定行中的换行符的正则表达式

Dav*_*ker 6 regex text notepad++ geany

我有一个文本文件,每个段落都独占一行。有些段落在单词的开头被分割。例如:

Books are an effective way to 
communicate across time, both from the past and into the future.
Run Code Online (Sandbox Code Playgroud)

我可以在搜索中使用正则表达式(regex),并在 Notepad++ 或 Geany 中替换它们,以在行的开头搜索小写字母,并将 \r\n (回车符+换行符)替换为空间。
问题是章节的副标题位于单词“or”之后,而单词“or”单独占一行。例如:

Chapter 3 
The Importance of Reading 
or
Literature is the most agreeable way of ignoring life
Run Code Online (Sandbox Code Playgroud)

使用该方法会将“或”行放在章节标题中,而不是单独一行。

我想要的是告诉正则表达式一行是否以小写字母开头以匹配它(用空格替换后面的 \r\n),但如果该行是“or\r\n”则不告诉正则表达式。

bob*_*ble 21

看起来您可以使用lookarounds \xe2\x80\x94搜索:

\n
\\h*\\R(?=[a-z])(?!or$)\n
Run Code Online (Sandbox Code Playgroud)\n

并替换为空格。请参阅regex101 上的演示(右侧的说明)。

\n
    \n
  • \\h匹配水平空间
  • \n
  • \\R匹配任何换行序列
  • \n
  • $匹配行尾Notepad++ \ 的默认值)
  • \n
\n
\n

在 Notepad++ 的替换对话框中,确保选中[\xe2\x80\xa2] Match case[\xe2\x80\xa2] Wrap around

\n

  • 我必须承认我对正则表达式了解不多(只是每隔几周左右使用它们时就会学到的基本知识)。但是,对于那六个投票“这个答案没有用”的人:请详细说明。答案“没用”在什么意义上?看起来很简短,切中要害,解决了所提出的问题。所以请赐教:这个答案有什么问题吗? (9认同)
  • @MisterMiyagi regex101 链接有整个正则表达式的解释,尽管复制它可能会有所帮助。 (2认同)
  • @MisterMiyagi是的,如果你在第一行看到我已经把[这个链接](https://www.regular-expressions.info/lookaround.html)放在*lookarounds*这个词上(它是最流行的之一)学习资源)。 (2认同)