【发布时间】:2017-05-12 03:18:33
【问题描述】:
我正在尝试使用 PCRE RegEx 从 Markdown 文档中提取 code block。对于初学者,Markdown 中的代码块是这样定义的:
要在 Markdown 中生成代码块,只需缩进每一行 至少用 4 个空格或 1 个制表符隔开。 代码块一直持续到没有缩进的行(或文章末尾)。
因此,鉴于此文本:
This is a code block:
I need capturing along with
this line
This is a code fence below (to be ignored):
``` json
This must have three backticks
flanking it
```
I love `inline code` too but don't capture
and one more short code block:
Capture me
到目前为止,我有这个正则表达式:
(?:[ ]{4,}|\t{1,})(.+)
但它只是捕获以至少四个空格或一个制表符为前缀的每一行。它不会捕获整个块。
我需要帮助的是如何将条件设置为在 4 个空格或 1 个制表符之后捕获所有内容,直到到达未缩进的行或文本的结尾。 p>
这是一个正在进行的在线工作:
【问题讨论】:
-
您在正则表达式上设置了哪些选项?如果您想将文本作为一个块而不是逐行分析,请尝试
/regex/m,其中m表示打开“多行”选项。 -
我尝试在 regex101.com 上切换
m开关,但它对我目前拥有的 RegEx 没有帮助。更新了问题以包含指向我拥有的在线 RegEx 的链接。 -
在 regex101.com 上启用多行开关 ('s') 实际上会导致我的问题中的 RegEx 匹配所有不正确的示例文本...
-
Capture me 缩进了 3 个空格,见 regex101.com/r/yMQCIG/3 有 4 个空格。
-
一个关于 Stack Overflow 的正则表达式问题与先前的尝试是世界第八大奇迹!干得好。