带有以下文字:
** First Header
------------------------------------------------------------
(https://www.stackoverflow.com) Stack Overflow
Description: Stack Overflow
Google (https://www.google.com)
Description: Google
** Second Header
...我如何使用正则表达式匹配直到第二个 header 带有双换行符,所以输出如下:
** First Header
------------------------------------------------------------
(https://www.stackoverflow.com) Stack Overflow
Description: Stack Overflow
Google (https://www.google.com)
Description: Google
使用以下正则表达式(将第一个 header 与所有字符以及空白字符匹配,因此 \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 字符(因此,有效匹配两个空行)。
关于javascript - 所有字符和空白字符的正则表达式模式,直到双换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54579242/