仅保留RegEx匹配的最后一个实例

仅保留RegEx匹配的最后一个实例,regex,notepad++,Regex,Notepad++,我有一个文本文档,其中包含以下文本 Searching at 2016-04-25 12:35:00 Searching at 2016-04-25 12:40:00 Searching at 2016-04-25 12:45:00 Found Data Searching at 2016-04-25 12:50:00 Searching at 2016-04-25 12:55:00 Found Data 我正在尝试使用记事本++删除所有带有搜索…的行,除非后面立即有数据 我目

我有一个文本文档,其中包含以下文本

Searching at 2016-04-25 12:35:00
Searching at 2016-04-25 12:40:00
Searching at 2016-04-25 12:45:00
    Found Data
Searching at 2016-04-25 12:50:00
Searching at 2016-04-25 12:55:00
    Found Data
我正在尝试使用记事本++删除所有带有
搜索…
的行,除非后面立即有数据

我目前正在使用记事本++将
搜索。*?$\r\n(搜索。*?
的所有实例替换为
$1
。但是,我需要按几次
Replace All
,这取决于它在没有找到数据的情况下连续搜索的次数

在上述示例中,所需输出为:

Searching at 2016-04-25 12:45:00
    Found Data
Searching at 2016-04-25 12:55:00
    Found Data
在记事本++中使用正则表达式有办法做到这一点吗?

使用此模式:

/Searching.*$\n(?!\s*Found Data)/
使用此模式:

/Searching.*$\n(?!\s*Found Data)/

你可以使用这个模式

(?:Searching.*?$\r\n)+(Searching.*?\r\n)

并将其替换为
$1

您可以使用此模式

(?:Searching.*?$\r\n)+(Searching.*?\r\n)

并将其替换为
$1

以下是执行此任务的方法:

  • Ctrl+H
  • 查找内容:
    搜索。+\R(?=搜索)
  • 替换为:
    NOTHING
  • 全部替换
选中
常规表达式
点匹配换行符

这将用另一个搜索行替换每个搜索行

\R
代表任何类型的换行符。

(?=search)
是一种积极的前瞻性方法,可以确保我们在换行符后有一个单词
search

以下是一种方法:

  • Ctrl+H
  • 查找内容:
    搜索。+\R(?=搜索)
  • 替换为:
    NOTHING
  • 全部替换
选中
常规表达式
点匹配换行符

这将用另一个搜索行替换每个搜索行

\R
代表任何类型的换行符。
(?=search)
是一种积极的前瞻性方法,确保换行符后有单词
search