Scusa ma questo come lo gestisci? Print "/* Ciao"
Print " foo " Print "*/" Pace. R Il 15/mar/2015 02:13 "germano carella" <germano.care...@gmail.com> ha scritto: > 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 >
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python