On Wed, Jun 19, 2019 at 10:24:47PM +0200, Daniele Zambelli wrote: > Il giorno mar 18 giu 2019 alle ore 16:46 Lorenzo Buonanno > <buonanno.lore...@gmail.com> ha scritto: > > > > Perché contiene un carattere che hai imposto di escludere in [^\$], c'è una > > ragione per cui invece di escludere caratteri dentro la stringa non puoi > > usare espressioni non greedy come suggerito più volte in questo thread? > > La ragione è che non avevo capito. Combinando la tua dritta con quella > di Marco ho ottenuto questo: > > ... > result = re.sub(r"(?<!\\)\$\$(.*?)(?<!\\)\$\$", r"\[\1\]", > input_text, flags=re.S) > result = re.sub(r"(?<!\\)\$(.*?)(?<!\\)\$", r"\(\1\)", > result, flags=re.S) > ... >
posso solo suggerire che per aumentare la leggibilità puoi usare re.VERBOSE (*) che ti permette di scrivere il pattern su più righe con i commenti: pattern = re.compile(''' (?<!\\) # negative lookbehind: matches if not preceded by \ \$\$ # $$formula$$ (.*?) # any text but not greedy! (?<!\\) # \$\$ # fine formula ''', flags=re.VERBOSE|re.S) sandro (*) https://docs.python.org/3.7/library/re.html#re.VERBOSE _______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python