【发布时间】:2018-05-03 10:36:20
【问题描述】:
我正在我的一个数学应用程序中解析 Latex 公式以转换为自定义格式。我的要求是当乳胶公式有一个分数时,即\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>
【问题讨论】:
标签: javascript regex latex