不知道大家通常用什么写markdown,本人习惯使用有道云笔记,但是有道云笔记的公式和常规的有点区别,以至于写完后无法直接应用于公众号。
这是有道云笔记教程,为什么要看教程呢?因为在写公式的时候,发现编辑器无法识别,查看教程后发现写公式是要插入代码块的,也就是写在 ```math中,行内公式也需要在$$前后加符号`
如果只在有道云里用,这样是ok的,分享后网页显示也没问题,但如果要投公众号就需要转换成常规模式了,本以为转换代码挺简单的,没想到还是踩了坑的,帮我补充了个知识点。
废话少说,先上代码
import sys
import re
youdao_note = None
with open(sys.argv[1]) as f:
youdao_note = f.read()
# 替换公式
youdao_new1 = re.sub('```math([\s\S]*?)```', r'$$\1$$', youdao_note)
# 替换行内公式
youdao_new2 = re.sub('`\$([\s\S]*?)\$`', r'$\1$', youdao_new1)
with open(sys.argv[2], 'w') as out:
out.write(youdao_new2)
公式不可避免的会存在换行符号,所以用 . 是不行的,通配符 . 的定义是匹配除换行符(\n、\r)之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像"(.|\n)"的模式
参考正则表达式匹配任意字符(包括换行符)的写法,将 . 换成 [\s\S]问题解决。
对于定义里说的(.|\n),我试了同样不行。