Desidero utilizzare un'espressione regolare python per rimuovere i commenti in un file LaTeX. In LaTeX un commento inizia con "%". Ma se il carattere% è sfuggito ("\%") allora non è un commento, è la percentuale del simbolo.backslash in un set di caratteri di un'espressione regolare python (come specificare il set di caratteri "non un backslash")?
Questa attività è solo una delle molte espressioni regolari che applico sul testo LaTeX. Conservo tutti questi reg in una lista di dict.
Il problema che devo affrontare è che la regexp che utilizzo per l'eliminazione dei commenti non funziona (perché non so come specificare il set di caratteri "non backslash"). Il backslash nel set di caratteri sfugge alla chiusura ']' e l'espressione regolare non è corretta.
Il mio codice:
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
Qualsiasi aiuto sarà molto apprezzato. Grazie!
Gilles
Hai provato a usare 'r '[^ \\]''? Il '' dovrebbe essere la sintassi regex per l'escape del backslash – Bakuriu
Se si desidera inserire una barra rovesciata letterale in un'espressione regolare, raddoppiarla. Il tuo patter dovrebbe leggere '[^ \\]%. *' –
Grazie ragazzi, Martijn Pieters risponde alle opere. Devo essere stanco ... – user1821466