【发布时间】:2022-08-19 14:38:30
【问题描述】:
我正在尝试使用正则表达式用\\\\; 替换markdown 文档中包含的乳胶中的空格。
在我使用的 md 包中,所有乳胶都包裹在 $ 或 $$
我想更改以下内容
\"dont edit this $result= \\frac{1}{4}$ dont edit this $$some result=123$$\"
对此
\"dont edit this $result=\\\\;\\frac{1}{4}$ dont edit this $$some\\\\;result=123$$\"
我已经设法使用下面的混乱函数来做到这一点,但想使用正则表达式来获得更清洁的方法。任何帮助,将不胜感激
import re
vals = r\"dont edit this $result= \\frac{1}{4}$ dont edit this $$some result=123$$\"
def cleanlatex(vals):
vals = vals.replace(\" \", \" \")
char1 = r\"\\$\\$\"
char2 = r\"\\$\"
indices = [i.start() for i in re.finditer(char1, vals)]
indices += [i.start() for i in re.finditer(char2, vals.replace(\"$$\",\"~~\"))]
indices.sort()
print(indices)
# check that no of $ or $$ are even
if len(indices) % 2 == 0:
while indices:
start = indices.pop(0)
finish = indices.pop(0)
vals = vals[:start] + vals[start:finish].replace(\' \', \'\\;\') + vals[finish:]
vals = vals.replace(\" \", \" \")
return vals
print(cleanlatex(vals))
输出:
[18, 39, 60, 78]
dont edit this $result=\\\\;\\frac{1}{4}$ dont edit this $$some\\\\;result=123$$