编写一个正则表达式,为 $ 分隔符和 html 标签之外的每个单词添加一个范围

问题描述 投票:0回答:1

我想使用正则表达式来执行以下操作:

  1. 正则表达式会忽略 html 标签的每个内部

  2. 正则表达式会忽略由 Mathjax 解析的 $...$ 内部的所有内容

  3. 正则表达式会忽略由 Mathjax 解析的 $$...$$ 内部的所有内容

  4. 正则表达式将每个单词替换为该单词

  5. 通过 <.?>(.?)<.*?>

    完成
  6. 与$(.*?)$)相反完成

  7. 与 $$(.*?)$$

    相反完成
  8. 通过replace(/[A-Za-z0-9.]+,"$1")完成

我正在努力组合这 4 个,因为没有“and”和“not”运算符。

这里对“不”有解释: 正则表达式匹配不包含单词的行

这里对“和”有解释: 正则表达式:有 AND 运算符吗?

我试过了 (?=([A-Za-z0-9.]+))(?=<.?>(.?)<.*?>) for 但它不起作用,我不知道如何应用“不“至第 2 项和第 3 项。

javascript regex regex-group regex-negation regexp-replace
1个回答
0
投票

这个问题可能不太适合正则表达式。如果你确实设法让它工作,那么将来人们阅读和理解正则表达式可能会很复杂并且相当困难。

此外,使用正则表达式来处理相对复杂的语法很容易错过边缘情况。

例如,您最初的方法可能会错过这样的事情:

<body>
  <p>Let's all do a thing.</p>
  $something$
  <p>All of us who are < 4 feet tall or > 6 feet tall should.</p>
</body>

您可以考虑使用 HTML 解析库,然后对每个 HTML 节点的内容使用 MathJax 解析库。然后用一个跨度包围 MathJax 未处理的每个事物。

© www.soinside.com 2019 - 2024. All rights reserved.