使用 RegEx 多行在 Notepad++ 中搜索连续的时间表

Search consecutive schedule in Notepad++ using RegEx multiline

我的要求是在 Notepad++ 上搜索,示例文本如下:

UM001 Uddharana Madhava

Date: 3/6/2021, Thursday
Topic: Bangla Economics
Language: Bengali

Date: 4/6/2021, Friday
Topic: Bangla Economics
Language: Bengali

Date: 3/6/2021, Thursday
Topic: Bangla Economics
Language: English

CJ009 Cidananda Janardana

Date: 3/6/2021, Thursday
Topic: Bangla Economics
Language: Telugu

搜索结果应突出显示

UM001 Uddharana Madhava

Date: 3/6/2021, Thursday
Topic: Bangla Economics
Language: Bengali

Date: 4/6/2021, Friday
Topic: Bangla Economics
Language: Bengali

不应该从其他老师的日程表中突出显示

Date: 3/6/2021, Thursday
Topic: Bangla Economics
Language: English

CJ009 Cidananda Janardana

Date: 3/6/2021, Thursday
Topic: Bangla Economics
Language: Telugu
Language(.+?)Date

上面的搜索模式不起作用,所以我尝试了

Language(.+?)(?![A-Z][A-Z]\d{3})Date
Language(.+?)(?![A-Z][A-Z]\d{3})(.+?)Date

这两个也不行。 请建议我怎样才能达到预期的结果。 这就是我要查找的内容,如果语言和日期之间有一个名称,则不应捕获该名称。 Here is a link of image which shows my requirement

你的回答不清楚你想强调什么,但我想你想要这个...
查找:^Language: Bengali\n+Date:

见附件

查找: ^Language: Bengali\n*Date.*

您想要的结果将如下所示,

仅突出显示具有多个日期部分的部分:

^[A-Z][A-Z]\d{3}\b\h+\S.*\s*(?>\RDate:\h.*(?:\R(?!Date:|[A-Z][A-Z]\d{3}\b).*)*){2,}

模式匹配:

  • ^ 字符串开头
  • [A-Z][A-Z]\d{3}\b 匹配值的格式 UM001 例如
  • \h+\S.*\s* 匹配 1+ 个水平空白字符,至少一个非空白字符和该行的其余部分。然后匹配可选的空白字符,也可以匹配换行符
  • (?> 原子团
    • \RDate:\h.* 匹配一个换行符,Date: 和该行的其余部分
    • (?:\R(?!Date:|[A-Z][A-Z]\d{3}\b).*)* 匹配所有不以 Date: 或类似起始值
    • 的模式开头的行
  • ){2,}关群重复2次以上

看到一个regex demo.