Ciao,
Grazie, ho risolto così:
pattern = r"/\*([\s\S]*?)\*/"
Così prende tutto il commento in un gruppo e lo posso ignorare.
Ora però mi sono imbattuto in un altro problema, ma questo è solo didattico:
ho un file con una sintassi tipo file ini di windows
[opzioni generali[
opzione1=valore1
opzione2=valore2
[opzioni secondarie]
;qualche riga di commento
secondaria1=3
secondaria2=4

Ora, il configparser fa il matching del file ini linea per linea e costruisce un dizionario. Io vorrei fare il matching in una volta sola, con un unico modello, utilizzando re.findall per mettere il risutato in una lista di tuple dove:
[('opzini generali','opzine1=1',opzine2=2')...]

Mi sto scervellando, le ho provate davvero tutte, ma proprio non ci riesco...

In realtà tutto questo mi serve per fare il parser di una grammatica acontestuale dove le produzioni hanno una loro sintassi particolare, non so se qualcuno di voi le conosce.

produzione ::= 'terminale' <nonterminale> | 'nonterminale> | VUOTA {codice da eseguire}

Secondo voi dunque è possibile creare un modello unico per analizzare un file .ini, tanto per cominciare?

Grazie dell'aiutissimo!


Il 12/03/2015 23:46, Alessandro Re ha scritto:
Ciao Germano,

forse non ho capito bene la domanda, ma non puoi semplicemente
specificare '\n' nel pattern da cercare?

Ad esempio:

import re # Ref. [1]
com = '''/* inizio del commento
continua su seconda riga
terza riga e finisce */'''
re.findall('[aeiou]\n', com)

findall restituisce queste occorrenze:

['o\n', 'a\n']

E quindi il carattere \n fa match senza problemi... Forse hai esigenze
un po' più particolari?

[1]: no, il mio cognome non fa di me un esperto di regex :)

Ciauz
~Ale

2015-03-12 17:56 GMT+00:00 germano carella <germano.care...@gmail.com>:
Salve a tutti,
ho bisogno di fare il match di una porzine di commento che includa anche il
carattere \n.
/*inizio del commento
il commento continua qui.
Anche qui.
*/
So che nelle espressioni regolari il metacarattere '.' serve proprio a
questo, ma se voglio includere anche '\n' devo usare il flag re.DOTALL.
Vorrei evitare di usarlo, anche se si complicano le cose.
Secondo voi si può fare? Io ho cercato in rete, ma non riesco a trovare
niente.
Qualcuno mi dà lumi?
Grazie!
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a