如何将以下内容与正则表达式匹配?
How do I match the following with regex?
Title1
......
Title2: Description
...................
Title3
......
我正在尝试匹配 Title1
、Description
和 Title3
。使用 (?<=: )(.*)(?=\n\.)
,我可以匹配 Description
。我不知道如何将 Title1
、Description
和 Title3
匹配在一起。
在VSCode中,您可以通过查找整个文件的开头或冒号后跟一个空格来匹配字符串:
(?<=:\s|^(?![^:\n]*:)).*(?=\n\.)
查看演示截图:
详情:
(?<=
- 正面回顾的开始(要求其模式与当前位置左侧的文本匹配):
:\s
- 一个冒号和一个空格
|
- 或
^(?![^:\n]*:)
- 除了 :
和换行符 之外的任何零个或多个字符之后没有 :
的行的开头
)
- 回顾结束
.*
- 该行的其余部分
(?=\n\.)
- 需要换行符和 .
立即出现在当前位置右侧的正前瞻。
参见regex demo。
您还可以断言左侧不是 :
,或者断言该字符串不包含 :
,然后匹配整行。
(?<=: |^(?!.*?: )).*(?=\n\.)
模式匹配:
(?<=
正后视,向左断言
:
匹配 :
|
或
^(?!.*?: )
负先行,字符串开始并在行 中断言不 :
)
关闭回顾
.*
匹配整行
(?=\n\.)
断言一个换行符和 .
Title1
......
Title2: Description
...................
Title3
......
我正在尝试匹配 Title1
、Description
和 Title3
。使用 (?<=: )(.*)(?=\n\.)
,我可以匹配 Description
。我不知道如何将 Title1
、Description
和 Title3
匹配在一起。
在VSCode中,您可以通过查找整个文件的开头或冒号后跟一个空格来匹配字符串:
(?<=:\s|^(?![^:\n]*:)).*(?=\n\.)
查看演示截图:
详情:
(?<=
- 正面回顾的开始(要求其模式与当前位置左侧的文本匹配)::\s
- 一个冒号和一个空格|
- 或^(?![^:\n]*:)
- 除了:
和换行符 之外的任何零个或多个字符之后没有
:
的行的开头)
- 回顾结束.*
- 该行的其余部分(?=\n\.)
- 需要换行符和.
立即出现在当前位置右侧的正前瞻。
参见regex demo。
您还可以断言左侧不是 :
,或者断言该字符串不包含 :
,然后匹配整行。
(?<=: |^(?!.*?: )).*(?=\n\.)
模式匹配:
(?<=
正后视,向左断言:
匹配:
|
或^(?!.*?: )
负先行,字符串开始并在行 中断言不
:
)
关闭回顾.*
匹配整行(?=\n\.)
断言一个换行符和.