【问题标题】:Regex: Select multiple lines between to equals word. Notepad++正则表达式:在等于单词之间选择多行。记事本++
【发布时间】:2020-04-07 15:21:12
【问题描述】:

我有一个文件,类似于 yaml,我尝试在 notepad++ 中选择单词之间的所有分隔线,尤其是“应用程序”。我尝试使用正则表达式,因为行数和内容是动态的,我想选择所有单独的段。

这是我现在拥有的,但是这个正则表达式从第一个“应用程序”到文件末尾选择。

^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'

我要选择的组:

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

【问题讨论】:

  • 你的意思是你需要(?s)^Application.*?(?=\R+Application|\z)
  • 是的,就是这样。请像回复一样发布并解释接受回复的正则表达式。
  • 如果有帮助,试试这个? ^App[\s\S]+(?=app)

标签: regex notepad++


【解决方案1】:

你可以使用的模式是

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

详情

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多