Python Regex to match YAML Front Matter

后端 未结 2 1127
小蘑菇
小蘑菇 2021-02-04 19:40

I\'m having trouble crafting a regex to match YAML Front Matter

This is the front matter I was trying to match:

    ---
    name: me
    title: test
             


        
2条回答
  •  隐瞒了意图╮
    2021-02-04 20:32

    I've used something like this regex, re.findall('^---[\s\S]+?---', text):

    def extractFrontMatter(markdown):
        md = open(markdown, 'r')
        text = md.read()
        md.close()
        # Returns first yaml content, `--- yaml frontmatter ---` from the .md file
        # http://regexr.com/3f5la
        # https://stackoverflow.com/questions/2503413/regular-expression-to-stop-at-first-match
        match = re.findall('^---[\s\S]+?---', text)
        if match:
            # Strips `---` to create a valid yaml object
            ymd = match[0].replace('---', '')
            try:
                return yaml.load(ymd)
            except yaml.YAMLError as exc:
                print exc
    

    I've also come across python-frontmatter, which has some additional helper functions:

    import frontmatter
    post = frontmatter.load('/path/to-markdown.md')
    
    print post.metadata, 'meta'
    print post.keys(), 'keys'
    

提交回复
热议问题