Конвертер Markdown -> Latex C++ regex

Пишу C++ программу для конвертации Markdown в Latex. У меня возникла проблема при конвертировании блоков кода, в Latex я хотел использовать пакет listings.

В MD код выделяется таким образом: введите сюда описание изображения

Вот собственно сам код:

string replace_code_area(string MD) {
    regex line("```(.*?)\n([.\n]*?)```");

    string tex = regex_replace(MD, line, "\\lstset{language=$1}\n\\begin{lstlisting}$2\\end{lstlisting}");

    if (tex != MD) {
        ::code_area_found = true;
    }

    return tex;
}

При запуске с такими исходными данными:

# Problem in regex

__First Bold__, __Second Bold__
_First Italic_, _Second Italic_

***Ha Ha*** *I like***This language**

---

\\```
a = 5
b = 7
a, b = b, a
\\```

``Not code``

Выдаёт вот такой результат

\documentclass{article} 
 \begin{document} 
\Huge  Problem in regex

\textbf{First Bold}, \textbf{Second Bold}
\textit{First Italic}, \textit{Second Italic}

\textit{\textbf{Ha Ha}} \textit{I like}\textbf{This language}

\noindent\rule{\textwidth}{1pt}

\\```Python
a = 5
b = 7
a, b = b, a
\\```

``Not code``


\end{document}

Т.е блок кода не изменяется в принципе. Функция replace_code_area вызывается гарантированно, я добавил cout после объявления регулярного выражения, и оно действительно выводило текст в консоль.

В коде *3 (3 знака) заменено на //``` что бы сайт не воспринимал это как часть блока кода.


Ответы (0 шт):