{"id":8099,"date":"2018-11-21T07:30:11","date_gmt":"2018-11-21T06:30:11","guid":{"rendered":"http:\/\/www.unilab.eu\/?p=8099"},"modified":"2021-04-14T18:27:40","modified_gmt":"2021-04-14T16:27:40","slug":"regex","status":"publish","type":"post","link":"https:\/\/www.unilab.eu\/it\/articoli\/coffee-break-it\/regex\/","title":{"rendered":"Regex: storia e funzionamento"},"content":{"rendered":"<p>Quando si parla di <strong>Regex<\/strong> (Espressioni Regolari), si inquadra uno strumento molto utile per chi ha a che fare con il mondo dello sviluppo. Le Espressioni Regolari sono uno strumento utilizzato in numerosi linguaggi di programmazione. Tra questi, \u00e8 possibile includere anche PHP e Javascript.<\/p>\n<p>Formalizzate agli inizi degli anni Quaranta, hanno fatto il loro ingresso nel mondo informatico attorno agli anni Settanta e in ambiente <strong>Unix<\/strong>. Il primo editor di testo che ne ha permesso l&#8217;utilizzo \u00e8 stata una versione di QED scritta da Ken Thompson, considerato uno dei pionieri di Unix.<\/p>\n<p>Il suddetto editor, caratterizzato da una interfaccia a riga di comando, metteva a disposizione degli utenti un comando noto come <strong>global regular expression print<\/strong>. Quest&#8217;ultimo fu trasformato presto in un applicativo indipendente, ossia grep.<\/p>\n<p>Almeno fino agli anni Ottanta le <strong>Espressioni Regolari <\/strong>non hanno goduto di grande popolarit\u00e0. Le cose sono cambiate in seguito all&#8217;invenzione del linguaggio di programmazione Perl (apprezzato perch\u00e9 molto versatile), che consentiva nativamente il loro utilizzo.<\/p>\n<p>Uscendo dal campo storico e passando a quello pratico, bisogna ricordare che i loro principali scopi sono il controllo della correttezza della sintassi e la <strong>manipolazione delle stringhe<\/strong>. Per concretizzare la validazione, \u00e8 necessario confrontarle con uno o pi\u00f9 modelli, i cosiddetti pattern.<\/p>\n<p><strong>Espressioni Regolari: da cosa sono formate?<\/strong><\/p>\n<p>Le Regex sono formate da diversi <strong>elementi<\/strong>. Ecco l&#8217;elenco completo:<\/p>\n<ul>\n<li>l Sequenza di caratteri, ossia una stringa che va interpretata nel suo significato letterale;<\/li>\n<li>l Metacaratteri, caso in cui l&#8217;interpretazione va invece oltre il significato letterale;<\/li>\n<li>l Ancore, elementi che segnalano la specifica posizione in cui la singola Espressione Regolare deve eseguire la sua analisi;<\/li>\n<li>l Modificatori, elementi che hanno la funzione di espandere o diminuire la porzione di testo che deve essere analizzata dalla singola Espressione.<\/li>\n<\/ul>\n<p>A seconda del linguaggio di programmazione utilizzato, cambia il motore alla base del funzionamento delle Espressioni Regolari. Il quadro appena descritto non ha ripercussioni particolari per quel che concerne i<strong> comandi principali<\/strong>. Questi ultimi, infatti, sono uguali in tutti i linguaggi.<\/p>\n<p><strong>Come si crea una Espressione Regolare per verificare una stringa<\/strong><\/p>\n<p>Adesso \u00e8 il momento di vedere come si crea una Regex per <strong>verificare una determinata stringa.<\/strong> Fondamentale \u00e8 utilizzare comandi specifici. Ciascuno di essi, infatti, svolge una funzione ben precisa.<\/p>\n<p>Partiamo dall&#8217;<strong>asterisco (*)<\/strong>, essenziale per effettuare la ricerca del carattere o dell&#8217;insieme di caratteri che lo precede. Proseguiamo con il <strong>punto fermo (.)<\/strong>, che serve a verificare tutti i caratteri, fatta eccezione per il ritorno a capo.<\/p>\n<p>Tra i comandi si pu\u00f2 trovare anche l&#8217;<strong>accento circonflesso (<\/strong><strong>^<\/strong><strong>)<\/strong>, il cui compito \u00e8 la verifica dell&#8217;inizio di una riga. Un caso specifico riguarda il suo inserimento all&#8217;interno di parentesi quadre. In questo caso, il comando nega la serie di caratteri che segue.<\/p>\n<p>Da citare \u00e8 anche il simbolo del dollaro che, se inserito alla fine di una Regex, verifica la fine di una riga. Molto importanti sono anche le<strong> parentesi quadre<\/strong>, che racchiudono al loro interno dei caratteri da verificare. Sulla base del loro contenuto, la verifica pu\u00f2 essere fatta su diversi caratteri.<\/p>\n<p>Proseguendo con l&#8217;elenco dei comandi, \u00e8 possibile trovare anche il <strong>backslash (\\)<\/strong>, ossia il carattere di escape per il carattere speciale. Ci\u00f2 significa in poche parole che il carattere viene interpretato letteralmente.<\/p>\n<p>Concludiamo l&#8217;elenco dei comandi delle Espressioni Regolari citando le <strong>parentesi acute con escaping<\/strong>, le quali indicano inizio e fine di una determinata parola.<\/p>\n<p>Parlare delle Regex in maniera completa vuol dire fare almeno un cenno finale al loro ruolo per chi fa <strong>SEO<\/strong>. Le Espressioni Regolari, infatti, possono essere utilizzate all&#8217;interno dei file .htaccess quando si deve effettuare un redirect 301 di tutto il sito web.<\/p>\n<!--themify_builder_content-->\n<div id=\"themify_builder_content-8099\" data-postid=\"8099\" class=\"themify_builder_content themify_builder_content-8099 themify_builder tf_clear\">\n    <\/div>\n<!--\/themify_builder_content-->\n","protected":false},"excerpt":{"rendered":"<p>Quando si parla di Regex (Espressioni Regolari), si inquadra uno strumento molto utile per chi ha a che fare con il mondo dello sviluppo.<\/p>\n","protected":false},"author":10,"featured_media":8101,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"%%title%% %%page%% %%sep%% %%sitename%%","_seopress_titles_desc":"Quando si parla di Regex (Espressioni Regolari), si inquadra uno strumento molto utile per chi ha a che fare con il mondo dello sviluppo.","_seopress_robots_index":"","_seopress_analysis_target_kw":"Regex","footnotes":""},"categories":[46],"tags":[],"class_list":["post-8099","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coffee-break-it","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"builder_content":"","_links":{"self":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/8099","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/comments?post=8099"}],"version-history":[{"count":0,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/8099\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media\/8101"}],"wp:attachment":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media?parent=8099"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/categories?post=8099"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/tags?post=8099"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}