python正则表达式涉及反斜杠

时间:2015-02-10 20:37:04

标签: python regex

我想从文件中提取所有的乳胶表达式,即$$之间不在\$\$之间的字符串

考虑以下内容:

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

知道我做错了什么吗?

1 个答案:

答案 0 :(得分:2)

你的正则表达式与美元符号前面的字符匹配。我建议使用负面的lookbehind:

for a in re.findall(r"(?<!\\)\$(.*?)(?<!\\)\$",l,re.S):