1
我想提取一个文件$
和$
之间的所有乳胶表达式,即字符串不属于\$
和\$
probem与蟒蛇正则表达式涉及反斜线
之间考虑followingg:
import re
with open("abstracts.txt","r",encoding="utf-8") as f:
l = f.read()
with open("latex.txt","w",encoding="utf-8") as f:
for a in re.findall(r"[^\\]\$.*?[^\\]\$",l,re.S):
f.write(a+"\n")
这按我的需要工作,但它包含美元符号。但是,当我更改(*)到
for a in re.findall(r"[^\\]\$(.*?)[^\\]\$",l,re.S): #(*)
它不会做我想要的。例如字符串$\overline{\tilde \ch_0}$
转换为\overline{\tilde \ch_0
。
任何想法我做错了什么?
“哪些不在\ $和\ $”部分表示什么?我没有看到它在你的代码中的任何地方被解决。 – 2015-02-10 20:50:17
请注意,为正则表达式使用[原始字符串文字](https://docs.python.org/2/reference/lexical_analysis.html?highlight=literal#string-literals)以避免混淆。例如。在'\ $'中,反斜杠在Python级别上未转义。 – 2015-02-10 20:51:58
@ivan_pozdeev:我已经在OP的代码中自由地做到了这一点,以便于阅读。 – Kevin 2015-02-10 21:06:09