Я анализирую латексную формулу в одном из моих математических приложений для преобразования в пользовательский формат,
Мое требование заключается в том, что когда латексная формула имеет дробь, т.е. \frac{a}{b}
, ее необходимо преобразовать в {a}/{b}
Ниже приведено регулярное выражение, которое я использую:
\\frac\{(((?![\{\}]).)*)\}\{(((?![\{\}]).)*)\}
это нормально разбирает простой случай, такой как \frac{a}{b}
, но когда у моей дроби были вложенные дроби или фигурные скобки внутри, она полностью перестала работать
например, чтобы разобрать сложную строку следующим образом: (в этом случае сбой синтаксического анализатора)
\frac {(\frac{-b\pm\sqrt{b^2-4ac}}{2a})^{10^{15}_1}}{(\frac{a}{c})^{\frac{s}{d}}}\int_{a}^{b}
Может ли кто-нибудь помочь мне, как этого добиться:
Ниже приведен полный код, который я использую:
function fraction(input) {
while (input.search(/\\frac\{(((?![\{\}]).)*)\}\{(((?![\{\}]).)*)\}/) >= 0) {
input = input.replace(/\\frac\{(((?![\{\}]).)*)\}\{(((?![\{\}]).)*)\}/g, "{$1}/{$3}");
}
if (input.search(/\\frac/) >= 0) {
input = fraction(input);
}
return input;
};
Enter formula: <input id="formula" onblur="console.log(fraction(document.getElementById('formula').value));"/> <button>Go</button>