<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Text | Stefano Cecere</title><link>https://stefanocecere.com/tag/text/</link><atom:link href="https://stefanocecere.com/tag/text/index.xml" rel="self" type="application/rss+xml"/><description>Text</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>it</language><lastBuildDate>Tue, 06 Apr 2021 00:00:00 +0000</lastBuildDate><image><url>https://stefanocecere.com/media/icon_hu99fd93e9d0016cd84f525f58a0223c71_354199_512x512_fill_lanczos_center_3.png</url><title>Text</title><link>https://stefanocecere.com/tag/text/</link></image><item><title>Regular Expressions: il paradiso del cerca e sostituisci automatico</title><link>https://stefanocecere.com/post/regex/</link><pubDate>Tue, 06 Apr 2021 00:00:00 +0000</pubDate><guid>https://stefanocecere.com/post/regex/</guid><description>&lt;blockquote>
&lt;p>Se una procedura ha una regola, allora può essere automatizzata. Scopriamolo con questo semplice sistema per cercare e sostituire del testo.&lt;/p>
&lt;/blockquote>
&lt;p>Ho 1200 files di testo che presentano tutti una sequenza di parole con lo stesso formato, e voglio cambiarli tutti.&lt;/p>
&lt;p>Ad esempio:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">url: /parola1/parola2/parola3/parola4 con testo a seguire
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>e voglio eliminare la parte parola3, cambiando il tutto in&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">url: /parola1/parola2/parola4 con testo a seguire
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ovviamente a mano impiegherei ore e sarebbe abbastanza stressante.&lt;br>
La domanda è: &amp;ldquo;c&amp;rsquo;è una regola con cui potrei trovare tutti questi testi e una regola per sostituirle? &lt;strong>se sì, benvenuti nel mondo dell&amp;rsquo;automazione!&lt;/strong>&lt;/p>
&lt;p>in questo caso io cerco qualsiasi testo che inizio con &lt;code>url: /&lt;/code> seguito da testo a caso, sequito da un altra &lt;code>/&lt;/code> etc.. tipo questo formato, dove ho numerato le parti tra le &lt;code>/&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">url: /$1/$2/$3/$4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>e poi le vado a sostituire eliminando la parte &lt;code>$3&lt;/code>&lt;/p>
&lt;p>Per farlo usiamo le
&lt;a href="https://it.wikipedia.org/wiki/Espressione_regolare" target="_blank">Espressioni Regolari&lt;/a>
(o Regular Expressions, abbreviate in RegEx) che sono uno standard di qualsiasi linguaggio di programmazione o editor di testi per trovare dei patterns di caratteri e modificarli.&lt;/p>
&lt;p>Cercherò quindi:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">url: \/(.+?)\/(.+?)\/(.+?)\/(.+?)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>dove uso &lt;code>\/&lt;/code> per il carattere &lt;code>/&lt;/code> e &lt;code>(.+?)&lt;/code> rappresenta un qualsiasi numero di caratteri, e lo sostituirò con:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">url: /$1/$2/$4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>E il gioco è fatto! 1200 file cambiati in un secondo.&lt;br>
Le Regular Expressions sono estremamente potenti, inventate già negli anni 1950!&lt;br>
E ci permette di capire una cosa: se qualcosa ha delle regole che possono essere formalizzate, allora può farla una macchina, e presto potremo chiedere alla nostra A.I. (Intelligenza Artificiale) di eseguire la procedura per noi.&lt;/p>
&lt;p>PS: l&amp;rsquo;ho usata per riorganizzare i vecchi post del mio blog&lt;/p></description></item></channel></rss>