如何将以下内容与正则表达式匹配?

How do I match the following with regex?

Title1
......

Title2: Description
...................

Title3
......

我正在尝试匹配 Title1DescriptionTitle3。使用 (?<=: )(.*)(?=\n\.),我可以匹配 Description。我不知道如何将 Title1DescriptionTitle3 匹配在一起。

在VSCode中,您可以通过查找整个文件的开头或冒号后跟一个空格来匹配字符串:

(?<=:\s|^(?![^:\n]*:)).*(?=\n\.)

查看演示截图:

详情:

  • (?<= - 正面回顾的开始(要求其模式与当前位置左侧的文本匹配):
    • :\s - 一个冒号和一个空格
    • | - 或
    • ^(?![^:\n]*:) - 除了 : 和换行符
    • 之外的任何零个或多个字符之后没有 : 的行的开头
  • ) - 回顾结束
  • .* - 该行的其余部分
  • (?=\n\.) - 需要换行符和 . 立即出现在当前位置右侧的正前瞻。

参见regex demo

您还可以断言左侧不是 : ,或者断言该字符串不包含 : ,然后匹配整行。

(?<=: |^(?!.*?: )).*(?=\n\.)

模式匹配:

  • (?<= 正后视,向左断言
    • : 匹配 :
    • |
    • ^(?!.*?: ) 负先行,字符串开始并在行
    • 中断言不 :
  • ) 关闭回顾
  • .*匹配整行
  • (?=\n\.) 断言一个换行符和 .

Regex demo