Обычно говорят, что регулярные выражения не могут сосчитать , что является неким простым способом описания проблемы, более формально обсуждаемой в Подсчет скобок с регулярным выражением .Посмотрите, что это означает.
Теперь, помня об этом, обратите внимание, что математические выражения LaTeX могут включать вложенные вложенные уравнения, которые могут включать дополнительные вложенные вложенные уравнения и т. Д.,Это аналогично проблеме определения, закрывает ли закрывающая скобка внутреннее выражение в скобках (как, например, в этом примере, где нет первого), или внешнюю скобку.Следовательно, регулярные выражения не будут достаточно мощными, чтобы справиться с полным общим случаем.
Если вы хотите выполнить неполное задание, вы можете создать регулярныйвыражение, которое находит $...$
и $$...$$
.Вам нужно будет обратить внимание на конкретный язык регулярных выражений.Python по сути тот же, что и Perl.
Важно, что эти $
-матчеры будут полностью пропускать \begin{equation} ... \end{equation}
, \begin{eqnarray} ... \end{eqnarray}
и так далее.Мы уже отметили, что обработка синтаксического анализа выражений LaTeX с помощью простого распознавателя регулярных выражений неадекватна, поэтому, если вы хотите хорошо поработать, игнорируя при этом сложность низкоуровневой манипуляции TeX с типами токенов, где можно изменить любой отдельный символ код категории - вам понадобится более общий анализатор.Затем вы можете токенизировать \begin
, {
, }
и слова и сопоставлять пары начала / конца.Вы также можете токенизировать $
и $$
и сопоставлять их.Поскольку синтаксические анализаторы могут считать точно так же, как регулярные выражения, вы можете сделать намного лучшую работу таким образом.