How to use regular expression with notepad++

How to use regular expression with notepad++

Notepad++ è attualmente uno dei migliori editor di testo gratuiti che ha molte funzioni e plugin. Oggi però voglio farvi vedere qualche esempio di utilizzo nelle espressioni regolari, che sono a mio avviso uno strumento potentissimo, ma anche delicatissimo che può produrre dei disastri se non viene usato con criterio.

wikipedia

Una espressione regolare definisce una funzione che prende in ingresso una stringa, e restituisce in uscita un valore del tipo sì/no, a seconda che la stringa segua o meno un certo pattern.

Ad esempio, tutti gli indirizzi e-mail devono essere costituiti nel seguente modo: cominciare con una sequenza di caratteri alfanumerici, seguiti dal simbolo chiocciola, seguiti da altri caratteri alfanumerici, seguiti dal punto, seguiti da due o tre lettere. Questa regola informale diventerebbe una regex qualora fosse codificata secondo una sintassi ben precisa e riconosciuta da un programma in grado di analizzare le stringhe.

Per comprendere meglio farò degli esempi e credo che vi torneranno utili, perchè spesso ci si trova davanti a delle richieste molto particolari. Per darvi un’idea, facciamo che un magazzino decide di cambiare la formattazione del l’indice di alcuni prodotti e sfortuna vostra non sono i primi tre caratteri o gli ultimi ma quelli compresi nel mezzo tra due slash es: RM123/X21F/333, come si fà? Ecco bisogna usare una espressione regolare che intercetti i valori tra i due slash e li sostituisca, nel caso di un database per esempio useremo una query includendoci la regex, e puliremo i record della tabella con i nuovi valori. In questa guida lavoreremo su file di testo e affronteremo alcuni casi, senza andare troppo nello specifico in quanto l’argomento è molto impegnativo e richiede del tempo per essere disinvolti.

A questo punto, credo sia meglio partire con degli esempi abbastanza semplici, ma che mirano a farvi capire come già vi ho detto, le mille trappole che nascondono  le espressioni regolari, e di come sia facile sbagliarsi.

Nell’esempio utilizzo una stringa utilizzata da un magazzino per catalogare alcuni prodotti, essa usa come separatore uno slash ed il cliente vuole cambiare la sigla del modello che si trova racchiusa tra due slash al centro della stringa, e ci tocca farlo in un modo o nell’altro.

Quindi da Macchina/XBS1/CB2011 a Macchina/PXBS1/CB2011

Supponendo di aver estratto la colonna dei record che ci interessa, passiamo a Notepad++, come sempre nulla è semplice, ed infatti ci accorgiamo che non è stata rispettata la nomenclatura e gli impiegati hanno inserito slash in eccesso riga:3,4,5,6 quindi usando (/).+(/) becchiamo anche parti di stringa da non modificare. Quindi occorre fare una verifica prima di procedere ripulendo la colonna, si potrebbe scrivere una espressione più complessa ma essendo un articolo per chi non ha ancora idea di cosa sia una espressione regolare non aumenterò la difficoltà e mi limiterò a una semplice spiegazione, nei prossimi articoli magari lo farò, quindi osserviamo alcune considerazioni qui sotto:

 

regular expression

Aggiungendo ^ prendiamo solo quelle che cominciano per /
Reg2

Aggiungendo ^ ed $ prendiamo solo quelle che cominciano per / e finiscono per /
Reg3

Aggiungendo $ prendiamo solo quelle che finiscono per /, ma anche quella che comincia per /
Reg4

Aggiungendo [0-9] prendiamo solo quelle che contengono numeri tra gli slash
Reg5

Aggiungendo [0-9] e il quantificatore {4} prendiamo solo quelle che contengono numeri tra gli slash ma solo se maggiori uguali a 4 cifre
Reg6

Nell’esempio ho utilizzato alcuni  metacaratteri:

()     identificano dei gruppi di caratteri
.     identifica qualsiasi carattere ad eccezione di quelli che identificano una riga nuova
^     identifica l’inizio di una riga
$     identifica la fine di una riga
[]     identificano intervalli e classi di caratteri

E i quantificatori:

+     sta per una o più occorrenze
{n} ricerca n occorrenze

Vi consiglio però di approfondire in quanto ho illustrato una parte molto basilare, ma vi è molto da approfondire, allora visto il campo d’azione enorme su cui potrete usarle, vale la pena cimentarsi e apprenderne almeno i rudimenti, anche ai web master, pensate alla modifica massiva di un foglio di stile CSS o ai TAG di un file HTML, PHP, JSP etc… Ecco che le motivazioni ci sono tutte, ma anche ai programmatori che possono benissimo utilizzarle al posto di IF o Cicli, o per Query avanzate nei DB. Tuttavia vi ricordo sempre che la loro versatilità e potenza ha un rovescio della medaglia e come nell’esempio che avete visto a volte quando sembra tutto a posto invece bisognerebbe prendere in considerazione anche le eventuali discordanze.

jepi

I'm Jepi, a curious blogger that enjoys writing technical and non technical articles with the right sense of irony !!!

Lascia un commento