正则表达式:Select 等于单词之间的多行。记事本++

Regex: Select multiple lines between to equals word. Notepad++

我有一个文件,类似于 yaml,我尝试在记事本++中 select 所有 de 行到单词之间,尤其是 "Application"。我尝试使用正则表达式,因为行数和内容是动态的,我想 select 所有单独的段。

这就是我现在拥有的,但是这个正则表达式 select 从第一个 "Application" 到文件末尾。

^Application.*^(?!Application)

文件示例:

Other
Application
  uuid='1234567890A'
  label='MyLabel'
  MessageFlow
    uuid='1234567890123B'
    ....
Application
  uuid='1234567890C'
  label='MyLabel'
  MessageFlow
    uuid='1234567890123D'
    ....
Application
  uuid='1234567890E'
  label='MyLabel'
  MessageFlow
    uuid='1234567890123F'
    ....
Application
  uuid='1234567890G'
  label='MyLabel'
  MessageFlow
    uuid='1234567890123H'

我想要加入的群组select:

Application
  uuid='1234567890A'
  label='MyLabel'
  MessageFlow
    uuid='1234567890123B'
...

您可以使用的模式是

(?s)^Application.*?(?=\R+Application|\z)

详情

  • (?s) - . 现在匹配换行字符
  • ^ - 行首
  • Application - 一句话
  • .*? - 任何 0+ 个字符,尽可能少,直到出现最左边的
  • (?=\R+Application|\z) - 1+ 换行符 (\R+) 后跟 Application,或者 (|) 文件结尾 (\z) .