gpt4 book ai didi

regex - 如何将 Markdown 代码块与 RegEx 匹配?

转载 作者:行者123 更新时间:2023-12-01 09:49:20 25 4
gpt4 key购买 nike

我正在尝试提取 code block来自使用 PCRE RegEx 的 Markdown 文档。对于初学者,Markdown 中的代码块是这样定义的:

To produce a code block in Markdown, simply indent every line of the block by at least 4 spaces or 1 tab. A code block continues until it reaches a line that is not indented (or the end of the article).



因此,鉴于此文本:
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,})(.+)

但它只是捕获以至少四个空格或一个制表符为前缀的每一行。它不会捕获整个 block 。

我需要帮助的是如何设置条件以捕获 4 个空格或 1 个制表符之后的所有内容,直到您到达未缩进的行或文本的结尾。

这是正在进行的在线工作:

https://www.regex101.com/r/yMQCIG/5

最佳答案

您应该使用开始/结束字符串标记(^$m 修饰符结合使用)。此外,您的测试文本在最后一个 block 中只有 3 个前导空格:

^((?:(?:[ ]{4}|\t).*(\R|$))+)

\R以及每次匹配匹配一个完整 block 的重复,而不是每次匹配一行。

请参阅 regex101 上的演示

免责声明: Markdown 规则比示例文本显示的更复杂。例如,当(嵌套)列表中有代码块时,这些代码块需要以 8、12 或更多空格作为前缀。正则表达式不适合识别此类代码块,或嵌入在使用更广泛格式组合的 Markdown 符号中的其他代码块。

关于regex - 如何将 Markdown 代码块与 RegEx 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41351903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com