Comment une analyse de balisage en ligne simple (c'est-à-dire * audacieuse *), dans Python?
Question
Comment implémenter un analyseur (en python) pour un sous-ensemble de wikitext qui modifie le texte, à savoir:
*bold*, /italics/, _underline_
Je le convertit en latex, donc la conversion est de:
Hello, *world*! Let's /go/.
à:
Hello \textbf{world}! Let's \textit{go}.
Bien qu'il n'y ait rien de spécifique à ce que ce soit une conversion en latex (notamment sauf les cas imbriqués comme "* bold / italique * whatami /" => "textbf {bold textit {italics} whatami}").
J'ai regardé bibliothèques de balisage existantes, mais ils (a) pas tout à fait la langue wiki, je voudrais, et (b) apparemment maîtrisé pour ce problème.
J'ai envisagé l'ingénierie inverse Cran, mais j'aimerais savoir quelles suggestions les autres ont avant d'entreprendre cet effort.
Merci!
La solution
Si votre langue est petite, les expressions régulières peuvent être la solution la moins douloureuse:
>>> 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}."