TeX 的 Javascript Regex 由 $$ 括起来

标签 javascript regex tex

正则表达式专家!

考虑到我们有以下文本,我试图找到一个 REGEX 来检测所有包含在两个 $$ 中的 TeX 表达式。

Select the correct answer:
  a) 10 % = $$\frac{1}{10}$$.
  b) 33 % < $$\frac{1}{3}$$
  c) 2 % = $$\frac{2}{100}$$,
  d) 9 % < $$\frac{1}{9}$$
  e) 5 % = $$1+\frac{1}{5}$$
  f) 1 % = $$0.05 - \frac{1}{5}$$

到目前为止,我想到的是:

/^\${2}[a-zA-Z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/ ?]*(\${2}|[\n\r]| )$/g

正如您可能预料的那样,可耻的是它不起作用!以下是我遇到的一些问题:首先,我很难检测到 \frac\。虽然我添加了 \\,但仍然失败。其次,我对 $$ 后面可以跟 spacenewline. 因此,即使我指定我的表达式在末尾查找 $$,仍然无法捕捉到很多情况。

我知道我不是第一个尝试过此操作的人,所以请分享您的想法或建议。预先感谢您的帮助!

最佳答案

你的 ^\${2}[a-zA-Z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/ ?]*(\${2}|[\n\r]| )$模式过于冗长。您可以假设那里可能有任何字符,而不是将所有可能出现在双美元符号之间的字符列入白名单。

你可以使用

/\${2}.*?\${2}/g

或者 - 如果中间可以有换行符(我怀疑):

/\${2}[\s\S]*?\${2}/g

参见 regex demo .

JS 演示:

var rx = /\${2}.*?\${2}/g;
var str = "Select the correct answer:\n  a) 10 % = \$\$\\frac{1}{10}\$\$.\n  b) 33 % < $$\\frac{1}{3}$$\n  c) 2 % = $$\\frac{2}{100}$$,\n  d) 9 % < $$\\frac{1}{9}$$\n  e) 5 % = $$1+\\frac{1}{5}$$\n  f) 1 % = $$0.05 - \\frac{1}{5}$$";
console.log(str.match(rx));
// => ["$$\\frac{1}{10}$$","$$\\frac{1}{3}$$","$$\\frac{2}{100}$$","$$\\frac{1}{9}$$","$$1+\\frac{1}{5}$$","$$0.05 - \\frac{1}{5}$$"]
//or, to get what is inside

var rx_extract = /\${2}(.*?)\${2}/g;
var m, results = [];
while (m=rx_extract.exec(str)) {
  results.push(m[1]);
}
console.log(results);
// => ["\\frac{1}{10}","\\frac{1}{3}","\\frac{2}{100}","\\frac{1}{9}","1+\\frac{1}{5}", "0.05 - \\frac{1}{5}"]

关于TeX 的 Javascript Regex 由 $$ 括起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47401329/

相关文章:

PHP如何像搜索引擎一样显示搜索结果

latex - 有没有办法覆盖 LaTeX 关于双下标和上标的错误?

java - 使用空字符串作为分隔符拆分字符串会产生前导空字符串但不会产生尾随空字符串

r - 针织前导码错误导致 "pandoc document conversion failed with error 43"

pdf - 保持尺寸的 JPEG 到 EPS 转换

javascript - Node Webkit 如何将 div 的值保存为 .txt 文件

javascript - Aurelia - 根据选择选项显示/隐藏元素

javascript - 有没有办法识别用户如何阅读帖子

javascript - 窗口单击事件 Javascript 在第一次单击时不起作用

php - 重写 php switch 语句的 url