Skip to main content
 首页 » 编程设计

python之是否可以在 Markdown 中替换 token

2025年05月04日10jpfss

我在 Python 中使用正则表达式从 CoffeeScript 文件中提取使用 Markdown 格式化的注释。 CS 使用### 作为多行注释的开始和结束标记。这与 markdown 格式冲突,因为 # 用于表示标题类。是否可以让 Markdown 将 % 或 ^ 或其他一些字符解释为 header 类标记?

请您参考如下方法:

利用 markdown.extensions.Extension 类可以覆盖 Python Markdown 的许多元素。经过一些挖掘和试验后,我通过编写一个扩展了通用 BlockParser 的自定义 header 解析器来实现这一点。

基本上它看起来像这样

class CustomHeaderParser( BlockParser ) 
    def run( params ) 
        # implementation 
 
class CustomExtension( Extension ) 
    def extendMarkdown( self, md, md_globals ) 
        md.parser.blockprocessor.add( 'custom_header_parser', CustomHeaderParser(md.parser), '<hashheader' ) 
        md.registerExtension( self ) 
 
 
markdown_parser = markdown.Markdown( extensions=[ CaretHeaderExtension() ] ) 
markdown_parser.convert( markdown_text ) 

在研究这个过程的大约一半时,我还发现了另一个不太理想的解决方法。 markdown理解的header样式有setext和atx两种。 Setext 在文本下方的行中使用 ==== 和 ----- 来提供两个标题级别 h1 和 h2。