Bit a bit, si cresce sempre


Blog di un ingeformatico
Statistiche
  • Views Home Page: 460.971
  • Views Posts: 1.493.449
  • Views Gallerie: 648.485
  • n° Posts: 520
  • n° Commenti: 301
Ora e Data
Archivio Posts
Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005

Recensione libro Espressioni regolari (Apogeo)

Qual è il linguaggio o la tecnologia di maggiore longevità nel campo informatico?

Il Cobol? Unix e derivati? Il Fortran? L’Assembler? Niente di tutto questo.

Sono le espressioni regolari, o Regex (Regular Expressions), nate nel 1950 (ma iniziate ad essere implementate solo nel 1966) ed ancora attualissime soprattutto nei linguaggi che lavorano molto con le stringhe, come il Perl. Uno dei loro punti do forza è la loro trasversalità; vengono utilizzate praticamente in tutti i linguaggi, e non sono legate ad una particolare piattaforma o tecnologia. Uno dei punti di debolezza, invece, è la loro cripticità. Pur essendo molto potenti, sono di difficile comprensione, e la loro scrittura è tutt’altro che intuitiva, come potrebbe esserla per qualsiasi altro linguaggio di programmazione. La loro scrittura, specie nei casi più complessi, assomiglia di più ad un’esoterica tecnica enigmistica, tanto da provocare ben più di un mal di testa anche a programmatori esperti.

Il risultato però è di poter riassumere, in un’unica espressione regolare, algoritmi di ricerca di testo ben più lunghi e complessi, se scritti con un “normale” linguaggio di programmazione.

Il loro campo di battaglia sono le stringhe di testo; ricerca, sostituzione, estrazione, tutto quanto si possa fare con i caratteri, sia alfanumerici che non. E siccome ogni applicazione, di qualsiasi tipo, fa uso di stringhe, se ne intuisce subito la loro importanza e la loro portata.

Questo maneggevole libretto di un autore italiano cerca di colmare una lacuna, ovvero di testi in italiano che coprano questo argomento. Sia nell’introduzione che nel primo capitolo, l’autore spiega il motivo della nascita e i principali utilizzi delle regular expression, iniziando già a dare (nel primo capitolo) un assaggio della loro potenza illustrando un semplice esempio di ricerca di testo all’interno di un testo più lungo.

 

Nel secondo capitolo vengono consigliati dei tool utili per testare le proprie espressioni regolari, senza i quali, infatti, lo studio di questo linguaggio sarebbe di un’astrazione molto faticosa. Il primo, disponibile online, è il RETester, disponibile sul ricco sito www.regexlib.com, mentre il secondo, che non richiede la connessione ad internet per essere utilizzato, è il Regex Coach, ovviamente gratuito e rintracciabile con una semplice ricerca con Google. Quest’ultimo programma verrà anche usato dall’autore per illustrare tutti gli esempi proposti nel libro, e dopo averlo provato un po’ di volte se ne scoprono subito le sue qualità. Mentre si scrive l’espressione regolare, data una certa stringa di testo, il programma ne evidenzia subito le occorrenze. Non ci vuole molto per capire che diventerà ben presto un valido strumento per chi necessita di scrivere regular expression per le proprie applicazioni. A partire dal terzo capitolo l’autore entra nel merito dell’argomento, seguendo la stessa tecnica del programmino: testo di esempio -> espressione regolare -> testo di esempio con le occorrenze che soddisfano la ricerca evidenziate con uno sfondo grigio (nel programma invece sono con sfondo gialli e verdi). Questa rappresentazione visuale è effettivamente molto efficace ed azzeccata dal punto di vista didattico. Fortunatamente, essendo l’argomento piuttosto criptico e poco intuitivo, l’autore procede spiegando ogni singolo dettaglio, e ritornando qualche volta su concetti già espressi, in modo da fissarli meglio nella mente del lettore (repetita juvant). I capitoli, numerosi (sono ben 23 in 182 pagine) ma di lunghezza limitata, coadiuvano a questo scopo. Partendo dalle ricerche più semplici, l’autore aumenta man mano la complessità, entrando abbastanza in profondità nell’enorme potenziale di questo linguaggio. Esistono infatti libroni di oltre 500 pagine sulle regular expression, e quindi, considerando la piccole dimensione di questo volumetto, l’autore deve necessariamente ottimizzare lo spazio a disposizione, sorvolando su alcuni dettagli o evitando di avventurarsi troppo in profondità. Bisogna comunque sottolineare che l’esposizione è sufficientemente dettagliata per garantire la sua utilità nella stragrande maggioranza dei casi.  

I primi capitoli sono tutti dedicati ai modificatori, elemento cruciale per padroneggiare le Regex, e l’autore li spiega con dovizia di esempi e con linguaggio molto chiaro ed informale.

Si prosegue poi coi delimitatori e i quantificatori, il vero nocciolo delle regex.

Purtroppo il Regex Coach non supporta alcune particolari varianti; l’autore ce lo segnala, e il lettore, in tal caso, si deve fidare di quanto trova scritto (a meno di ricorrere ad un altro software più potente). 

 

Dal 16esimo capitolo in poi – e questa parte copre una buona metà del libretto - le Regex vengono ambientate nei differenti linguaggi di programmazione, dando anche modo all’autore di esprimere tutta la sua competenza, decisamente a 360 gradi. Ogni lettore, qualsiasi linguaggio utilizzi (perlomeno dei più famosi) si troverà rappresentato, e vedrà come è meglio applicare i concetti finora appresi nel suo caso specifico. Il mio, ad esempio, è quello illustrato nel capitolo 22, dedicato al .NET Framework.

All’inizio di ognuno di questi capitoli, viene anche tracciata la storia del linguaggio in questione, e    questa rappresenta una vera chicca, interessante ed istruttiva (l’autore, fan ed appassionato di Python, ha scritto un libretto, sempre di questa collana Apogeo, anche su questo linguaggio).

Concludono il testo 3 brevi appendici.

La prima, indicata a chi vuol approfondire gli aspetti teorici, tratta dei due motori che stanno dietro le regular expression, definiti NFA e DFA (Non-Deterministic e Deterministic Finite Automata).

La seconda riporta tre casi tipici di utilizzo, ovvero le validazione del CAP, l’estrazione dell’HTML da una pagina web, e la validazione delle password.

La terza (una pagina sola) riporta una tabella riassuntiva di gran parte di quanto spiegato nella prima parte del libro.

Libro che è da leggere assolutamente con il Regex Coach aperto nel proprio pc, in modo da provare subito tutte le varianti partendo dalle espressioni regolari di esempio. Dato che anche l’autore si basa su questo tool, viene in soccorso del lettore quando c’è bisogno di impostarne qualche proprietà, al fine di fargli interpretare correttamente il testo inserito (ad esempio quando è su più linee o quando si vuole rendere la ricerca insensibile alle maiuscole/minuscole).

Ovviamente non ci si può aspettare un approfondimento totale di questo argomento (non era neanche lo scopo dell’autore), ma vengono fornite delle basi che torneranno utili per la grande maggioranza dei casi in cui si dovrà scrivere delle regular expression nella propria attività di sviluppatore. Ottima la cura nella realizzazione del testo. Ho trovato solo un refuso a pag. 53 (lo “\w” andrebbe sostituito con “\b”).

 

Alla pagina http://www.apogeonline.com/libri/88-503-2665-3/scheda è presente la scheda del libro, con una breve descrizione del suo contenuto, ma senza la possibilità di consultare il Sommario o avere un qualchè di scaricabile. È però possibile acquistarlo con lo sconto del 20%, riducendo così ulteriormente il già basso prezzo di copertina.

 

Pro

Questo agile libretto, pur con le sue modeste dimensioni, copre una grave mancanza nel panorama dei libri informatici in italiano; un testo dedicato totalmente alle espressioni regolari, spesso solo relegate ad un capitolo in alcuni libri sui linguaggi di programmazione. La sua esposizione chiara, benché concisa, e la ricchezza di esempi, lo rendono utile ad una vasta schiera di lettori, e a questo scopo vengono in soccorso anche gli ultimi capitoli in cui l’argomento è messo in pratica nei più diffusi linguaggi di programmazione, in modo da vedere subito come si utilizza nel proprio ambiente di sviluppo.

Prezzo molto competitivo, e buona impaginazione complessiva.

 

Contro

Niente di particolare da segnalare per quanto riguarda la trattazione. La rilegatura Apogeo, dato che è del tipo a colla, tende ad “aprirsi” dopo un uso prolungato del testo.

 

Livello: Tutti

 

Sommario

Introduzione

1 – Cap. 1: Che cosa sono le regular expression?

5 – Cap. 2: Come provare le regex?

15 – Cap. 3: Caratteri normali e caratteri speciali

21 – Cap. 4: Le stringhe semplici

25 – Cap. 5: Il carattere jolly “.”

29 – Cap. 6: Cifre e spazi: \d, \D, \s e \S

33 – Cap. 7: I set di caratteri: [ ]

39 – Cap. 8: Le parole: \b, \B, \w e \W

47 – Cap. 9: L’inizio e la fine: ^, $, \A e \Z

53 – Cap. 10: I quantificatori: +, *, ? e {…}

67 – Cap. 11: Gruppi e alternative: (…) e |

79 – Cap. 12: Unicode e ASCII: \u e \x

83 – Cap. 13: Guardati intorno: (?!...), (?=…), (?

89 – Cap. 14: Varie: \a, \c, \e, \f, \n, \r, \v, \t e (?#...)

95 – Cap. 15: I modificatori: /i, /s e /m

101 – Cap. 16: Regex in Python

107 – Cap. 17: Regex in Ruby

113 – Cap. 18: Regex in Perl

119 – Cap. 19: Regex in PHP

125 – Cap. 20: Regex in JavaScript

137 – Cap. 21: Regex in Java

145 – Cap. 22: Regex in .NET

155 – Cap. 23: Regex in Visual Basic

165 – Appendice A: Le implementazioni

173 – Appendice B: Esempi utili

179 – Appendice C: Tabella riassuntiva

181 – Indice analitico

 

NB (aggiunta del 13/12/2007)

Per chi è interessato all'utilizzo delle Regular Expressions in C#, segnalo questo bell'articolo di Bill Evjen disponibile sul sito della Wrox:

http://www.wrox.com/WileyCDA/Section/id-310801.html

 

 

Categoria: Books
lunedì, 03 dic 2007 Ore. 08.50

Messaggi collegati


Meteo
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003