[Python] Ricerca e sostituzione con regex
Alessandro Dentella
sandro a e-den.it
Gio 20 Giu 2019 00:43:26 CEST
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.lorenzo a 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
Maggiori informazioni sulla lista
Python