带有以下文本:

** First Header
------------------------------------------------------------

(https://www.stackoverflow.com) Stack Overflow

Description: Stack Overflow

Google (https://www.google.com)

Description: Google


** Second Header


...如何使用正则表达式模式匹配直到第二个标头带有双换行符,所以输出如下:

** First Header
------------------------------------------------------------

(https://www.stackoverflow.com) Stack Overflow

Description: Stack Overflow

Google (https://www.google.com)

Description: Google


使用以下正则表达式(将第一个标头与所有字符以及空格字符匹配,因此\s\S与后续正则表达式文字的用法以及双换行符的否定提前)我绝对是在正确的轨道上:

RegExp("\\*\\* First Header[\\s\\S]*?(\\r?\\n(?!\\r?\\n))")


...但仅输出:

** First Header

最佳答案

您可以使用

/(\*\* First Header[\s\S]*?)(?:\r?\n){3}/


或仅兼容JS正则表达式

/(\*\* First Header[^]*?)(?:\r?\n){3}/


请参见regex demo

细节


(\*\* First Header[\s\S]*?)-第1组捕获:


\*\* First Header-文字** First Header子字符串
[\s\S]*?-任何0+个字符,尽可能少

(?:\r?\n){3}-出现三个可选的CR,后跟LF字符(因此,匹配两个空白行)。

10-06 05:12
查看更多