[Python] Ricerca e sostituzione con regex

Daniele Zambelli daniele.zambelli a gmail.com
Mar 18 Giu 2019 15:15:53 CEST


Il giorno mar 18 giu 2019 alle ore 12:23 Marco Beri
<marcoberi a gmail.com> ha scritto:
>
> On Tue, Jun 18, 2019 at 11:57 AM Daniele Zambelli <daniele.zambelli a gmail.com> wrote:
>>
>>
>> ##    result = re.sub(r'\\\$', r'd_o_ll_a_ro', string, flags=re.S)
>>     result = re.sub(r'(?<!\\)\$\$(.[^\$\$]*)(?<!\\)\$\$',
>>   [...]

Ok, lasciato un solo carattere e funziona in tutti i casi in cui
funzionava prima.

Ma non riesco a capire perché se nell'espressione c'è la stringa "\$"
la seguente istruzione non riconosce l'intera espressione:


...
>>> print(translate(r'espressione con dollaro:~$3^2+4^2=\$5^2$'))
espressione con dollaro:~\(3^2+4^2=\$5^2\)
"""
    result = re.sub(r'(?<!\\)\$\$(.[^\$]*)(?<!\\)\$\$',
                    r'\[\1\]',
                    string.rstrip(), flags=re.S)
    result = re.sub(r'(?<!\\)\$(.[^\$]*)(?<!\\)\$',
                    r'\(\1\)',
                    result, flags=re.S)


Il test mi dà:

Failed example:
    print(translate(r'espressione con dollaro:~$3^2+4^2=\$5^2$'))
Expected:
    espressione con dollaro:~\(3^2+4^2=\$5^2\)
Got:
    espressione con dollaro:~$3^2+4^2=\$5^2$


Qualche suggerimento?

-- 

Daniele

www.fugamatematica.blogspot.com

    giusto!
    nel verso
    forse è perché non guardiamo le cose
    Quando non ci capiamo,


Maggiori informazioni sulla lista Python