gpt4 book ai didi

python - Mistune 内联 Lexar 重新编译帮助

转载 作者:行者123 更新时间:2023-12-01 04:06:14 31 4
gpt4 key购买 nike

我正在使用 Misune 来解析一些文本,将文档编号超链接到内部站点上的文档管理系统。使用 https://github.com/lepture/mistune 处的 wiki_link 示例我发现任何用双方括号包围的东西并创建一个 iwl anchor (来自 HP/iManage/Autonomy 的交织链接协议(protocol))。这工作得很好,但是,我试图用 doc# 前缀来识别数字(# 和数字之间有或没有一些空格)。因此,如果文本说以 doc# 25487657 作为示例...,则 re.compile 参数将根据前面的“doc#”识别该数字(范围可以从低千到数十亿)。我可以处理 output_interwriting_link 方法中 # 的拆分,但在正则表达式方面遇到了困难。

我一直依赖搜索引擎来获取正则表达式示例来解决我的正则表达式问题,因此我无法自己编写表达式。我现在如何使用双方括号执行此操作,如下所示:

from mistune import Renderer, InlineGrammar, InlineLexer, Markdown
import re
import copy


class InterwovenLinkRenderer(Renderer):
def interwoven_link(self, docnum):
return '<a href="iwl:dms=dmssrv11&lib=Active&num=%s&ver=1&latest=1&command=opencmd">%s</a>' % (docnum, docnum)


class InterwovenLinkInlineLexer(InlineLexer):
def enable_interwoven_link(self):
self.rules.interwoven_link = re.compile(
r'\[\[' # [[
r'([\d]+?)' # Document Number
r'\]\](?!\])' # ]]
#r'''(doc#[\d]+?)'''
)

self.default_rules = copy.copy(InlineLexer.default_rules)
self.default_rules.insert(3, 'interwoven_link')

def output_interwoven_link(self, m):
text = m.group(1)
#doc, docnum = text.split('#')
return self.renderer.interwoven_link(text)


@register.filter(name='parse')
def parse(value=None):
if value:
renderer = InterwovenLinkRenderer()
inline = InterwovenLinkInlineLexer(renderer)
# enable the feature
inline.enable_interwoven_link()
markdown = Markdown(renderer, inline=inline)
return markdown(value)
else:
return False

有什么我可以使用的提示吗?

最佳答案

如果要匹配字符串“doc#”后面的任何数字,则正则表达式为 doc# (\d+)

关于python - Mistune 内联 Lexar 重新编译帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35544657/

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