[Python] Come fare il match di tutti i caratteri racchiusi tra /* e */?

Roberto Polli robipolli a gmail.com
Dom 15 Mar 2015 08:32:22 CET


Scusa ma questo come lo gestisci?

Print "/* Ciao"

Print " foo "

Print "*/"

Pace.
R
Il 15/mar/2015 02:13 "germano carella" <germano.carella a 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.carella a 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 a lists.python.it
>>> http://lists.python.it/mailman/listinfo/python
>>>
>> _______________________________________________
>> Python mailing list
>> Python a lists.python.it
>> http://lists.python.it/mailman/listinfo/python
>>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150315/b49ee810/attachment.html>


Maggiori informazioni sulla lista Python