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

Bri*_*unt 4 python parsing wikitext creole

如何为修改文本的wiki文本子集实现解析器(在Python中),即:

*bold*, /italics/, _underline_ 
Run Code Online (Sandbox Code Playgroud)

我正在将它转换为LaTeX,因此转换来自:

Hello, *world*! Let's /go/.
Run Code Online (Sandbox Code Playgroud)

至:

Hello \textbf{world}! Let's \textit{go}.
Run Code Online (Sandbox Code Playgroud)

虽然没有具体说明它是转换为LaTeX(特别是除了嵌套的情况,如"*bold/italics*whatami /"=>"textbf {bold\textit {italics} whatami}").

我查看了现有的标记库,但它们(a)不是我想要的维基语言,而且(b)似乎因这个问题而被压制.

我考虑过逆向工程Creoleparser,但我想知道在我付出努力之前别人有什么建议.

谢谢!

Can*_*der 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}."
Run Code Online (Sandbox Code Playgroud)

  • 有些人在面对问题时会想"我知道,我会使用正则表达式".现在他们有两个问题.--Jamie Zawinski (2认同)