【问题标题】:Convert GFM highlighted code block to Stack Overflow highlighted code block将 GFM 高亮代码块转换为 Stack Overflow 高亮代码块
【发布时间】:2018-02-06 04:46:19
【问题描述】:

1。问题

我无法将GFM highlighted code block 转换为Stack Overflow highlighted code block


2。示例

例如,我需要转换:

Do not change this line

```markdown
Sasha great!
    Sasha nice!
She is beautiful, surprise!
```

Do not change this line

到:

Do not change this line

<!-- language: lang-markdown -->

    Sasha great!
        Sasha nice!
    She is beautiful, surprise!

Do not change this line

3。问题

要突出显示代码块,我需要在代码块内的每一行的开头添加选项卡。我不明白,我该怎么做。


4。没有帮助

我的示例正则表达式:

  • 查找

    \`\`\`(.+?)\n((.+?\n)+)\`\`\`
    
  • 替换

    <!-- language: lang-\1 -->\n\n\t\2
    

Demonstration on Regex101.

我得到结果:

Do not change this line

<!-- language: lang-markdown -->

    Sasha great!
    Sasha nice!
She is beautiful, surprise!


Do not change this line

仅在代码块内的第一行的开头添加制表符。我该怎么办,在代码块内的每一行的开头添加制表符?

【问题讨论】:

  • 有机会在 Notepad++ 中执行此操作吗?
  • @revo:我使用 Sublime Text,而不是 Notepad++。我不知道如何解决这个任务,使用 Sublime Text 插件。谢谢。
  • 我不确定插件,但在 PCRE(崇高文本)中,您可以分两步完成,而不是在单行正则表达式中。
  • @revo:你能告诉我如何使用 PCRE 分两步解决它吗?谢谢。

标签: regex pcre oniguruma


【解决方案1】:

由于您使用的是 Sublime Text 查找/替换功能并且不涉及任何编程语言,因此您需要大约两个步骤来实现您想要的。

第一步尝试搜索:

(?m)(?:^```\h*\S+\s+\K|\G(?!\A))^(?!```)(.*\R+)(?:```)?

并替换为:

\t\1

Live demo

第二个查找/替换过程是添加 HTML 注释,因此搜索:

(?m)^```\h*(\S+)

并将其替换为:

<!-- language: lang-\1 -->\n

Live demo

【讨论】:

    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 2019-06-13
    相关资源
    最近更新 更多