我想使用python regexp删除LaTeX文件中的注释。在LaTeX中,注释以“%”开头。但是,如果%字符被转义(“\%”),则它不是注释,而是符号%。

该任务只是我在LaTeX文本上应用的许多正则表达式中的一项。我将所有这些reg exp存储在字典列表中。

我面临的问题是,用于修剪注释的正则表达式不起作用(因为我不知道如何指定字符集“非反斜杠”)。字符集中的反斜杠转义了结束的']',并且正则表达式不正确。

我的代码:

regexps=[]
regexps.append({r'left':'%.*', 'right':r''}) # this strips all the comments, but messes up with the percent characters (\%)
regexps.append({r'left':'[^\]%.*', 'right':r''}) # this is incorrect (escapes the closing "]" )
return applyRegexps(latexText, regexps)


def applyRegexps(text, listRegExp):
    """ Applies successively many regexps to a text"""
    if testMode:
        print str(listRegExp)
    # apply all the regexps in the list
    for element in listRegExp:
        left = element['left']
        right = element['right']
        r=re.compile(left)
        text=r.sub(right,text)
    return text

任何帮助都感激不尽。谢谢!

吉尔斯

最佳答案

只需将反斜杠加倍,但请使用原始字符串文字,以避免再次将它们加倍:

regexps.append({'left':r'[^\\]%.*', 'right':r''})

09-11 19:50