Python 在markdown中创建链接的hashtag
我目前正在尝试用django/python和linkify hashtags解析markdown。有一些简单的解决方案:Python 在markdown中创建链接的hashtag,python,django,regex,markdown,Python,Django,Regex,Markdown,我目前正在尝试用django/python和linkify hashtags解析markdown。有一些简单的解决方案: for tag in re.findall(r"(#[\d\w\.]+)", markdown): text_tag = tag.replace('#', '') markdown = markdown.replace( tag, f"[{tag}](/blog/?q=%23{text_tag})"
for tag in re.findall(r"(#[\d\w\.]+)", markdown):
text_tag = tag.replace('#', '')
markdown = markdown.replace(
tag,
f"[{tag}](/blog/?q=%23{text_tag})")
这很好,但是可以将带有#
的所有内容转换为链接。如:
https://example.com/xyz/#section-在第
页上获得链接。如果它当前位于链接本身内部,它也会被链接化
当链接被链接化时,内部链接也会断开
下面是一个综合案例:
#hello This is an #example of some text with #hash-tags - http://www.example.com/#not-hashtag but dont want the link
#hello #goodbye #summer
#helloagain
#goodbye
This is #cool, yes it is #radaf! I like this #tool.
[Link](#not-a-hashtag)
[Link](https://example/#also-not)
<a href="#this-neither">Hai</a>
#您好这是一个#带有#散列标签的文本示例-http://www.example.com/#not-标签,但不要链接
#你好#再见#summer
#你好
#再见
这太酷了,是的,是拉达夫!我喜欢这个工具。
[链接](#非标签)
[连结](https://example/#also-不)
谢谢使用
def regex_replace(m):
if m.group(1):
return fr"[{m.group(1)}](/blog/?q=%23{m.group(2)})"
return m.group()
regex = r'''<[^>]*>|\[[^][]*]\([^()]*\)|https?://[^\s"'<>]*|(#(\w+(?:\.\w+)*))'''
markdown = re.sub(regex, regex_replace, markdown)
def regex_replace(m):
如果m.组(1):
返回fr“[{m.group(1)}](/blog/?q=%23{m.group(2)})”
返回m.group()
regex=r'']*>\[[^][]*]\([^()]*\)\https?:/[^\s']*.*(\w+(?:\.\w+)”)
markdown=re.sub(正则表达式、正则表达式替换、markdown)
看
]*>\[^][]*]\([^()]*\)\https?:/[^\s”]*.*(\w+(?:\.\w+)
是一个正则表达式,它匹配标记、标记链接、URL或匹配一个hashtag,在\
之后捕获整个标记及其部分(组1)。匹配第一组后,替换的是链接化的标签,否则字符串将返回而不进行修改。使用
def regex_replace(m):
if m.group(1):
return fr"[{m.group(1)}](/blog/?q=%23{m.group(2)})"
return m.group()
regex = r'''<[^>]*>|\[[^][]*]\([^()]*\)|https?://[^\s"'<>]*|(#(\w+(?:\.\w+)*))'''
markdown = re.sub(regex, regex_replace, markdown)
def regex_replace(m):
如果m.组(1):
返回fr“[{m.group(1)}](/blog/?q=%23{m.group(2)})”
返回m.group()
regex=r'']*>\[[^][]*]\([^()]*\)\https?:/[^\s']*.*(\w+(?:\.\w+)”)
markdown=re.sub(正则表达式、正则表达式替换、markdown)
看
]*>\[^][]*]\([^()]*\)\https?:/[^\s”]*.*(\w+(?:\.\w+)
是一个正则表达式,它匹配标记、标记链接、URL或匹配一个hashtag,在\
之后捕获整个标记及其部分(组1)。第一组匹配后,替换的是链接化的hashtag,否则字符串将返回而不进行修改。“注意:请求HTML、JSON等。正则表达式往往会遇到负面反应。如果有语法分析器,请使用它”-正则表达式当前使用的语法分析器不正确。目前没有具有hashtag链接的解析器。我自己编写的链接器是一个模板过滤器。“注意:请求HTML、JSON等。正则表达式往往会遇到负面反应。如果有它的解析器,请改用它”——正则表达式tagI目前使用的是mistune解析器。目前没有具有hashtag链接的解析器。我自己编写链接器作为模板过滤器。