Le espressioni regolari nascono per soddisfare una esigenza specifica: la selezione e la modifica di parti arbitrarie di testo in relazione al tipo e alla posizione dei caratteri che le compongono.
Si supponga di dover selezionare ed elencare i termini marcati dai tag <dfn> </dfn> presenti su un sorgente HTML; tali termini, utili per la creazione di un glossario, possono essere sparsi in una qualsiasi parte del sorgente HTML.
Se, ad esempio, nel sorgente è presente una riga di testo del tipo:
I <dfn>tag</dfn> di tipo <dfn>block-level</dfn> sono diversi e si distinguono dai tag di tipo <dfn>in-line</dfn>
i termini da selezionare ed elencare sono:
tag block-level in-line
Il testo del file HTML che contiene la riga menzionata è la così detta stringa sorgente, cioè una sequenza arbitraria di caratteri su cui ricercare e selezionare le parti volute.
Le parti da ricercare e selezionare non sono altro che sotto stringhe della stringa sorgente.
Per mezzo delle espressioni regolari è possibile ricercare e selezionare sotto stringhe di una stringa sorgente che hanno determinate caratteristiche.
le espressioni regolari, o REGEXP, sono un vero e proprio linguaggio simbolico, con una sintassi e una semantica, attraverso cui costruire un pattern, cioè un modello che descrive un insieme astratto di una o più stringhe, da confrontare con le sotto stringhe di una stringa sorgente.
Il pattern matching è l'attività di confronto fra l'insieme delle stringhe descritte con il pattern e l'insieme delle sotto stringhe ricavabili dalla stringa sorgente, al fine di verificarne le corrispondenze.
Per soddisfare l'esigenza di selezionare i termini marcati fra i tag <dfn> e </dfn>, ad esempio, è possibile utilizzerò la seguente espressione regolare:
<dfn>\([^<]\{1,\}\)</dfn>.
I programmi che utilizzano e capiscono le espressioni regolari sono molteplici, ciascuno per un suo scopo specifico, come ad esempio la modifica automatica della sotto stringa selezionata.
Infatti, le espressioni regolari da sole non bastano, occorrono anche i programmi che eseguono le manipolazioni sul testo selezionato.
Lo storico programma, nei sistemi UNIX like, per svolgere tale compito è SED.
Riprendendo l'esempio dei termini marcati da <dfn> </dfn>, il seguente comando SED individua detti termini, li estrae dalla stringa sorgente e li stampa sullo standard output:
sed -n -e 's/<dfn>\([^<]\{1,\}\)<\/dfn>/§\1§/g' -e 's/[^§]*§\([^§]\{1,\}\)§[^§]*/\1\n/gp' *.html