regex - Notepad++ 删除两个特定字符串之间的换行符

标签 regex replace notepad++

我有这样的东西

\text
This is a sentence.
This is another sentence.
\endtext

我想删除\text 和\endtext 的所有实例中两个句子之间的换行符。为了看起来像这样

\text
This is a sentence. This is another sentence.
\endtext

但当然,事情变得复杂的是\text 之后和\endtext 之前也有换行符。这些我想保留。所以,从逻辑上讲,用英语来说,我想做的是这样的

(“\text\n”之后)(删除\n 的所有实例)(“\n\endtext”之前)

但是由于我不太擅长正则表达式,所以我不确定如何用该语言编写它。有人可以帮忙吗?

最佳答案

Notepad++ 支持 PCRE。

您可以使用此正则表达式进行搜索:

(?:\\text\R|(?<!\A)\G).*\K\R(?!\\endtext)

将其替换为空格。

RegEx Demo

正则表达式分割:

  • (?: :启动非捕获组
    • \\text :匹配\text
    • \R : 匹配换行符
    • | :或
    • (?<!\A)\G :从上一场比赛结束时开始。 (?<!\A)是为了确保我们不是起始位置
  • ) :结束非捕获组
  • .* :匹配0个或多个除换行符之外的任意字符
  • \K :重置比赛信息
  • \R : 匹配换行符
  • (?!\\endtext) :负向前视以确保我们没有 Match 当前位置旁边的\endtext`

关于regex - Notepad++ 删除两个特定字符串之间的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75163220/

相关文章:

regex - 正则表达式用引号括起日期

regex - Notepad++ 中的正则表达式,每行打开和关闭大括号

java - 正则表达式提取文本

python - 如何在 python 中比较 Rpm 版本

r - 根据R中的另一个矩阵/df替换df/matrix中的值

regex - Emacs 正则表达式 wordWord 边界(特别是关于下划线)

php - 正则表达式匹配任何 UTF 字符,不包括标点符号

正则表达式和拆分驼峰

java - 为什么删除换行符后重新插入换行符不起作用?

javascript - 正则表达式捕获所有内容,而不仅仅是括号中的 "Wildcard"- 如何修复它?