Espressioni Regolari: trovare le frasi che NON contengono una stringa

Trovare frasi che NON contengono una stringa con le Espressioni Regolari, non è immediatamente intuitivo.

Le Espressioni Regolari (Regular Expressions in inglese) anche note con l’abbreviazione RegExp o RegEx, sono un potente linguaggio di ricerca di stringhe in un testo ormai disponibile, con poche differenze sintattiche, in quasi tutti i linguaggi di programmazione ed in molti editor di testo, da Microsoft Word a Notepad++.

trovare frasi che non contengono una stringa con le RegEx

Non è questa la sede per trattare approfonditamente le Espressioni Regolari ma voglio invece illustrarvi una piccola “dritta” che, preso un testo qualsiasi, consente di trovare frasi che non contengono una stringa o una particolare sequenza di caratteri.

Le espressioni regolari sono nate per trovare qualcosa in un testo e non per trovare quello che non c’è e quindi non è né facile né intuitivo trovare frasi che non contengono una stringa.

Ci possiamo però riuscire con l’ Espressione Regolare qui di seguito:

^(.(?!stringa che non deve essere contenuta nella frase))*$

RegEx in dettaglio

Il carattere ^ indica l’inizio di una frase. La prima coppia di parentesi contiene un punto .che indica “qualsiasi carattere”, mentre la seconda coppia di parentesi (quella più interna) contiene un punto interrogativo ? che individua una “asserzione di lunghezza 0”, cioè una condizione che deve essere soddisfatta ma che non seleziona nessun testo.

Il ! che segue subito il ? indica una negazione. Il costrutto (?!stringa)quindi indica che il . cioè qualsiasi carattere, NON deve essere seguito da stringa

Se ci fermassimo a questo punto, l’espressione regolare però esaminerebbe solamente il primo carattere e si fermerebbe. E’ necessario dire alla RegEx di continuare per tutti i caratteri fino alla fine della frase: l’ *fuori dalle parentesi e subito prima del simbolo $ fa proprio questo: reitera la ricerca fino alla fine della frase, indicata proprio dal simbolo $.

Riassumendo, quindi, questa RegEx prende in esame frase per frase del testo e controlla che ogni carattere della frase non sia seguito da stringa rendendo quindi possibile trovare frasi che non contengono una stringa o una particolare sequenza di caratteri.

One Comment

  1. Pingback: Trovare una data in un testo con le RegEx: vedi come! | Dammi Una Dritta

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *