如何为修改文本的wiki文本子集实现解析器(在Python中),即:
*bold*, /italics/, _underline_
我正在将其转换为LaTeX,因此转换来自:
Hello, *world*! Let's /go/.
为:
Hello \textbf{world}! Let's \textit{go}.
虽然没有具体说明它是转换为LaTeX(特别是除了“* bold / italics * whatami /”=>“textbf {bold \ textit {italics} whatami}”等嵌套案例。)
我看过existing markup libraries,但它们(a)不是我想要的维基语言,而且(b)似乎因这个问题而被压制。
我考虑过逆向工程Creoleparser,但在进行这项工作之前,我想知道别人有什么建议。
谢谢!
答案 0 :(得分:7)
如果您的语言很小,正则表达式可能是最不痛苦的解决方案:
>>> import re
>>> str = "Hello, *world*! Let's /go/."
>>> str = re.sub(r"\*([^\*]*)\*", r"\textbf{\1}", str)
>>> str = re.sub(r"/([^/]*)/", r"\textit{\1}", str)
>>> str
"Hello, \textbf{world}! Let's \textit{go}."