Miseria cagnolina!
Forse premettendo un carattere di inizio riga? mi pare \b?
Ci devo pensare!!!


Il 15/03/2015 08:32, Roberto Polli ha scritto:

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 <mailto: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 <mailto: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 <mailto:Python@lists.python.it>
            http://lists.python.it/mailman/listinfo/python

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


    _______________________________________________
    Python mailing list
    Python@lists.python.it <mailto: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