我想使用正则表达式来执行以下操作:
正则表达式会忽略 html 标签的每个内部
正则表达式会忽略由 Mathjax 解析的 $...$ 内部的所有内容
正则表达式会忽略由 Mathjax 解析的 $$...$$ 内部的所有内容
正则表达式将每个单词替换为该单词
通过 <.?>(.?)<.*?>
完成与$(.*?)$)相反完成
与 $$(.*?)$$
相反完成通过replace(/[A-Za-z0-9.]+,"$1")完成
我正在努力组合这 4 个,因为没有“and”和“not”运算符。
这里对“不”有解释: 正则表达式匹配不包含单词的行
这里对“和”有解释: 正则表达式:有 AND 运算符吗?
我试过了 (?=([A-Za-z0-9.]+))(?=<.?>(.?)<.*?>) for 但它不起作用,我不知道如何应用“不“至第 2 项和第 3 项。
这个问题可能不太适合正则表达式。如果你确实设法让它工作,那么将来人们阅读和理解正则表达式可能会很复杂并且相当困难。
此外,使用正则表达式来处理相对复杂的语法很容易错过边缘情况。
例如,您最初的方法可能会错过这样的事情:
<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 未处理的每个事物。