如何删除文本文档中从 XXXX 到空行前的最后一行的所有内容?

如何删除文本文档中从 XXXX 到空行前的最后一行的所有内容?

给定一个包含多个内容实例的文本文档:

XXXX
random number of lines with random text
other random text
more random text
random text
'blank line'

我想删除空白行之前的行中 XXXX 和随机文本之间的所有内容,并在随机文本前插入一个逗号,使其看起来像这样:

XXXX,random text
'blank line'

我怎样才能用一个命令做到这一点?

我目前在 Windows 10 上使用 sublime text 3 和 notepad++,但这个问题与平台无关。我会使用任何能用的东西,谢谢!

答案1

假设“事物”和“东西”总是一样的,你可以使用这个:

找什么XXXX\r\nthings\r\nstuff.*?\r\n(.*?)\r\n\r\n
用。。。来代替XXXX, \1\r\n\r\n

在哪里:

  • \r\n\: 代表 Windows 结束行(回车符、换行符)
  • .*?:0 个或多个字符,非贪婪搜索
  • ():定义一个组
  • \1:匹配的组的内容。

这是我的测试用例:

在此处输入图片描述

点击“全部替换”后的结果如下:

在此处输入图片描述

答案2

使用记事本:

  • 找什么:XXXX\K\R(^[^'].+$\R){1,}
  • 用。。。来代替:\r\n
  • 搜索模式:正则表达式

输入

输出

答案3

感谢 reddit 的 scoberry5:

以下是我认为您想要的部分:

XXXX 某个字符,包括换行符,任意次数(尽可能少) 一个或多个非换行符(尽可能多) 行尾,后跟一个我们处于行尾标记

您应该能够将 (XXXX).*?([^\n]+)\n$ 替换为 \1,\2\n ,如下所示https://regex101.com/r/bldhDZ/1

相关内容