regex 编写一个正则表达式,为$ delimiters和html标记之外的每个单词添加span

f0ofjuux  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(88)

我想使用regex来做以下事情:
1.正则表达式忽略html标记的每个内部
1.正则表达式忽略$...$内部的所有内容,这些内容都是由Mathematica解析的
1.正则表达式会忽略$$...$$内部的所有内容,这些内容会被Mathematica解析
1.正则表达式用那个词替换每个词
1.使用<.*?>(.*?)<.*?>完成
1.与\$(.*?)\$相反)
1.与\$\$(.*?)\$\$相反
1.使用replace(/[A-Za-z0-9.]+,"<span class='invisible'>$1</span>")完成
我正在努力结合这4个,因为没有“与”和“不”的运营商。
这里有一个“不”的解释:Regular expression to match a line that doesn't contain a word
这里有一个关于“和”的解释:Regular Expressions: Is there an AND operator?
我尝试了(?=([A-Za-z0-9.]+))(?=<.*?>(.*?)<.*?>),但它不起作用,我不知道如何将“不”应用于第2和第3项。

3vpjnl9f

3vpjnl9f1#

这个问题可能不太适合正则表达式。如果你设法让它工作,它可能会很复杂,而且将来很难让人阅读和理解正则表达式。
此外,使用正则表达式来处理相对复杂的语法很容易错过边缘情况。
例如,您最初的方法可能会遗漏以下内容:

<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没有处理的每个东西周围 Package 一个span。

相关问题