python - 我如何用 <div>$...$</div> 之类的东西替换 LaTeX $...$ 和 $$...$$ 符号?

标签 python regex

我目前遇到的问题是 Jekyll 不能很好地与 Markdown 和 LaTeX 配合使用。所以我有很多关于 $\frac{some}{latex}$ 的文章或 $$\int^e_v {en} more$$ .

如何替换 $...$通过 <span>$...$</span>$$...$$通过 <div>$$..$$</div> ?

使这项任务变得困难的是:

  • ...可能包括换行符。事实上,...可能包含任何内容,除了 $
  • 第一个$<span>$ 取代, 但第二个 $</span>
  • $...$$$...$$可以在同一文档中使用(但始终至少由一个空格分隔)

编辑:我刚刚看到我还需要一些转义。所以这个任务还有一个难度:

  • \$不应与上述两种情况中的任何一种相匹配。

最佳答案

知道您要求使用正则表达式,但您会为您提到的需要手动处理的边缘情况而头疼。 (如果发布了其他正则表达式解决方案,请将此答案与他们的进行比较)。有了这个,可以很简单地更改双和单 TeX 标记的行为并处理 TeX 代码中的转义。这是一个非常简单的 pyparsing 示例,可以满足您的需求:

from pyparsing import *

D1 = QuotedString("$",escChar='\\')
D2 = QuotedString("$$",escChar='\\')

div_action = lambda x: "<div>$%s$</div>"%x[0]
span_action = lambda x: "<span>$$%s$$</span>"%x[0]
D1.setParseAction(span_action)
D2.setParseAction(div_action)
others  = Word(printables)
grammar = OneOrMore(D2 | D1 | others).leaveWhitespace()

还有一个用例:

S = "$\LaTeX$ is worth $$x=\$3.40$$"
print grammar.transformString(S)

给予:

<span>$\LaTeX$</span> is worth <div>$$x=$3.40$$</div>

关于python - 我如何用 <div>$...$</div> 之类的东西替换 LaTeX $...$ 和 $$...$$ 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20845778/

相关文章:

regex - 在 VBA Access 中验证字符串格式

php - 如何使用正则表达式检查字符串不包含 "bird"或 "cat"?

python - 元素顺序随机且 maxOccurs > 1

Python 尝试迭代多维列表的一个元素

python - 对(字符串, float )的字典进行排序时,字符串索引超出范围

python - 如何访问列表中的最后一项?(python)

python - 在 Python 中使用字符串提取数据框中的最后一个数字

regex - 在 perl 中,如何模式匹配字符串以查看一行中是否存在回车符

javascript - 将 String html 转换为数组对象类型

python - 如何测试独立脚本文件