Как разобрать простую встроенную разметку (то есть * полужирный *) в Python?

Как реализовать синтаксический анализатор (в Python) для подмножества wikitext, которое модифицирует текст, а именно:

*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}").

Я посмотрел на существующие библиотеки разметки, но они (а) не совсем вики-язык, который я хотел бы, и (б), казалось бы, одолели для этой проблемы.

Я думал об обратном проектировании Creoleparser, но я хотел бы знать, какие предложения есть у других, прежде чем я предприму эти усилия.

Спасибо!

1 ответ

Решение

Если ваш язык маленький, регулярные выражения могут быть наименее болезненным решением:

>>> 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}."
Другие вопросы по тегам