-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[1] Come posso sperare di usare le espressioni regolari senza creare codice illeggibile e non manutenibile? regex, leggibile regexp, leggibile espressione regolare, leggibile /x

Ci sono tre tecniche che posso rendere le espressioni regolari manutenibili e comprensibili.

  • Commenti all'esterno dell'espressione regolare

    Descrivete quello che fate e come lo fate, usando i normali commenti del Perl

        # trasforma una linea nella prima parola di essa, seguita da
        # un segno di "due punti" e il numero di caratteri del resto della
        # linea
        s/^(\w+)(.*)/ lc($1) . ":" . length($2) /meg;
  • Commenti interni all'espressione regolare

    Il modificatore /x fa in modo che gli spazi vengano ignorati all'interno di un'espressione regolare (fatta eccezione per le classi di caratteri), inoltre permette di usare i normali commenti. Come potete immaginare, gli spazi e i commenti aiutano molto.

    /x vi consente di trasformare questo:

        s{<(?:[^>'"]*|".*?"|'.*?')+>}{}gs;

    in questo:

        s{ <                 # parentesi angolare aperta
            (?:              # raggruppamento senza la creazione di riferimento
                             #   all'indietro
                 [^>'"] *    # 0 o piu` cose che non sono un >, ne' un ' ne' un "
                    |        #    o altrimenti
                 ".*?"       # una sezione tra doppi apici (match non-greedy)
                    |        #    o altrimenti
                 '.*?'       # una sezione tra apici singoli (match non-greedy)
            ) +              #   il tutto una o piu` volte
           >                 # parentesi angolare chiusa
        }{}gsx;              # sostituisci con nulla, cioe` cancella

    Non è chiaro come un brano di prosa, ma è molto utile per descrivere il significato di ciascuna parte del pattern.

  • Delimitatori differenti

    Benché normalmente pensiamo a pattern delimitati da caratteri /, essi possono essere delimitati da quasi qualunque carattere. perlre descrive questo aspetto. Ad esempio, l'istruzione s/// usata sopra usa le parentesi come delimitatori. Scegliere un altro delimitatore può evitare la necessità di marcare il carattere affinché sia interpretato letteralmente:

        s/\/usr\/local/\/usr\/share/g;    # cattiva scelta del delimitatore
        s#/usr/local#/usr/share#g;        # scelta migliore

vedi in inglese

AUTORE E COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan Torkington. Tutti i diritti riservati.

Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.

Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese ma non è obbligatorio.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google