如何在Python中解析简单的内联标记(即* bold *)?

时间:2009-02-06 17:43:21

标签: python parsing wikitext creole

如何为修改文本的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,但在进行这项工作之前,我想知道别人有什么建议。

谢谢!

1 个答案:

答案 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}."