gpt4 book ai didi

python - Mistune Markdown 解析器仅匹配我的表情符号模式的第一次出现

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:59 26 4
gpt4 key购买 nike

我一直在尝试向 mistune (markdown parser in python) 添加“表情符号”语法但不幸的是我没有成功。我对正则表达式没有那么丰富的经验,所以我的可能有问题,但我就是不知道是什么。我的有点基于我在 mistune 中找到的内容。 。问题是,misune 只会匹配第一个模式(就像 block 中的第一个模式),并且第一个匹配后的每个表情符号模式都被视为普通文本。这是我想出的代码:

import re
import mistune

class EmojiRenderer(object):
def emoji(self, text):
return "<emoji>%s</emoji>" % text


class EmojiInlineLexer(mistune.InlineLexer):
def __init__(self, **kwargs):
super(EmojiInlineLexer, self).__init__(**kwargs)
self.default_rules.insert(0, "emoji")
self.rules.emoji = re.compile(r'^:([a-zA-Z0-9\+\-_]+):', re.I)

def output_emoji(self, m):
text = self.output(m.group(1))
return self.renderer.emoji(text)


class MarkdownRenderer(mistune.Renderer, EmojiRenderer):
def __init__(self, **kwargs):
super(MarkdownRenderer, self).__init__(**kwargs)


renderer = MarkdownRenderer()
inline = EmojiInlineLexer(renderer=renderer)
markdown = mistune.Markdown(renderer=renderer, inline=inline)
demo_text = """
:thumbs_up: *this works*

this doesn't work :thumbs_down:

:smile: :cry:ing
"""
print(markdown(demo_text))

这是输出:

<p><emoji>thumbs_up</emoji> <em>this works</em></p>
<p>this doesn't work :thumbs_down:</p>
<p><emoji>smile</emoji> :cry:ing</p>

但是预期的输出应该是

<p><emoji>thumbs_up</emoji> <em>this works</em></p>
<p>this doesn't work <emoji>thumbs_down</emoji></p>
<p><emoji>smile</emoji> <emoji>cry</emoji>ing</p>

我非常感谢任何意见/帮助。

最佳答案

我不懂 python,但这应该可以工作(至少在 regex101 上可以)

:([a-zA-Z0-9\+\-_]+):

参见https://regex101.com/r/iFHgTZ/1

关于python - Mistune Markdown 解析器仅匹配我的表情符号模式的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42132615/

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