Как разобрать простую встроенную разметку (то есть * полужирный *) в 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}."