Abbonamenti UE Core & Enterprise: ottieni il 10% di sconto sul secondo annoScegli l’opzione di 2 anni e risparmia il 10% sul secondo anno di abbonamento.
UE Core include UltraEdit + UltraCompare.
UE Enterprise include l’intera suite UltraEdit.
Acquista ora →

Site New Logo

Introduzione

L’uso delle espressioni regolari rimane una delle tecniche più sottovalutate per quanto riguarda la manipolazione e la ricerca del testo. A causa della sua sintassi poco comune, a prima vista può sembrare arcana a molti principianti (e non possiamo biasimarli!).

Tuttavia, con una serie di strumenti utili e alcuni esempi per familiarizzare con la tecnica, la regex diventa molto più intuitiva e apre molte possibilità di manipolazione del testo. Ed è proprio questo l’obiettivo di questo blog post.

Nota: faremo riferimento alla Masterclass di UltraEdit sulle Regex per questo blog. Non esitare a leggere questo blog insieme alla replica del webinar.

Perché usare le espressioni regolari

Le espressioni regolari ti offrono un modo alternativo per filtrare e cercare stringhe specifiche utilizzando la corrispondenza dei modelli e la manipolazione del testo. Si tratta di uno strumento versatile che ti permette di definire modelli di ricerca complessi per abbinare sequenze di caratteri nelle stringhe.

È particolarmente utile se non vuoi definire esattamente ogni stringa ma sai che seguono un certo schema o formato. Ad esempio, un indirizzo e-mail o un numero di telefono che avrebbero un carattere [email protected]o “+09-87654321”, rispettivamente.

Per riassumere, le espressioni regolari sono una tecnica di ricerca di pattern utilizzata principalmente per:

  • Convalidare l’esistenza del testo
  • Convalida del formato del testo
  • Trovare ed estrarre il testo

Questa flessibilità rende le regex ideali per operazioni di ricerca complesse che vanno oltre le capacità delle semplici funzioni di ricerca per stringhe. Ad esempio, la regex può convalidare dati come gli indirizzi e-mail, estrarre URL dal testo, riformattare il testo esistente o sostituire modelli specifici con un nuovo testo, il che è particolarmente utile per gestire i dati di input.

Differenza tra ricerca/codice regex e stringa regolare

Rispetto alle normali operazioni di ricerca e filtro, le regex offrono una maggiore flessibilità e complessità, permettendoti di definire schemi intricati con lementi, ripetizioni e classi di caratteri opzionali.

Tuttavia, questa potenza comporta dei compromessi in termini di prestazioni e leggibilità. Il Regex può essere più lento, soprattutto con schemi complessi e grandi insiemi di dati, e la sua sintassi può essere difficile da capire.

Mentre le regex sono più adatte per le attività che richiedono una corrispondenza avanzata dei modelli, le normali operazioni di ricerca e di filtro sono più intuitive ed efficienti per le corrispondenze immediate ed esatte. Il trucco sta nel determinare dove e come utilizzare le regex rispetto alla corrispondenza con le stringhe regolari.

Protip: Per capire cosa fa ogni parte della regex, sperimenta con un regex tester.

regexr101 in ultraedit per regex

L’applicazione web regex101. Questo strumento può essere utilizzato per descrivere parti di una regex.

Esempio 1: Estrazione di date con espressioni regolari in Python

In questo esempio, utilizziamo sia la regex che la corrispondenza manuale delle stringhe per estrarre le date da una frase.

import re
text = "The event is scheduled for 2023-10-01 and 2023-11-15."
pattern = r"\b\d{4}-\d{2}-\d{2}\b"
dates = re.findall(pattern, text)
print("Dates found:", dates)

Utilizza la regex per abbinare sezioni di testo che seguono lo schema yyyy-mm-dd.


text = "The event is scheduled for 2023-10-01 and 2023-11-15."
  words = text.split()
  dates = []
  
  for word in words:
      if len(word) == 10 and word[4] == '-' and word[7] == '-':
          try:
              year, month, day = map(int, word.split('-'))
              dates.append(word)
          except ValueError:
              continue
  
  print("Dates found:", dates)

Utilizzando la ricerca manuale delle stringhe. Questo metodo di forza bruta analizza l’intera riga di testo e controlla se segue il formato della data: non è la soluzione migliore, ma funziona.

 

Esempio 2: Convalida dell’input (e-mail) con regex in Python

In questo esempio, utilizziamo sia la regex che la corrispondenza manuale delle stringhe per cercare di convalidare un indirizzo e-mail.

import re
  email = "[email protected]"
  pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
  
  if re.match(pattern, email):
      print("Valid email address")
  else:
      print("Invalid email address")

Utilizza una regex per trovare una corrispondenza tra il nome utente e la parte del dominio dell’e-mail.

email = "[email protected]"

  if "@" in email and "." in email.split("@")[1]:
  print("Valid email address")
else:
  print("Invalid email address")/code>

Utilizza la suddivisione delle stringhe e le dichiarazioni if per convalidare le email. Offre una soluzione più semplice rispetto all’ultimo esempio grazie alla struttura prevedibile degli indirizzi e-mail.

Sintesi:

Entrambi gli esempi mostrano come la corrispondenza tra regex e stringhe regolari possa raggiungere lo stesso risultato. Tuttavia, è importante verificare prima il tipo di dati che stai elaborando e l’output che intendi ottenere. Entrambi i metodi funzionano, ma uno potrebbe essere più complesso dell’altro.

Il primo esempio con l’e-mail mostra come un’espressione regex possa facilmente sostituire più righe e operazioni di stringa. D’altra parte, il secondo esempio con la convalida dell’e-mail dimostra che le operazioni con le stringhe regolari possono essere meno complesse e più facili da usare rispetto alle regex.

 

Altri esempi di regex + demo del webinar

Ecco altri esempi che illustrano gli scenari di utilizzo delle regex. Vengono utilizzati file reali e formati di testo comuni che puoi incontrare quotidianamente. Questo dovrebbe darti un’immagine più chiara di come puoi utilizzare la regex al massimo delle sue potenzialità.

La seguente presentazione mostra uno strumento chiamato UltraEdit (UE), un pratico editor di testo che include il supporto integrato per la ricerca e la sostituzione regex. È uno strumento versatile per gli sviluppatori e può essere utilizzato per modificare il codice, scrivere script ed eseguire manipolazioni complesse del testo utilizzando le regex, soprattutto su file di grandi dimensioni.

Se sei interessato a vedere altri esempi di utilizzo delle regex nel mondo reale, ti consigliamo di guardare il webinar “UltraEdit Masterclass: The Regex Toolkit You’ll Actually Use”, un webinar incentrato sull’esplorazione delle espressioni regolari compatibili con il Perl con esempi pratici e reali.

Se vuoi provare questi esempi da solo, ecco i file di esempio utilizzati nel webinar. file di esempio utilizzati nel webinar. Ecco un riassunto della sessione:

  • Operazioni di ricerca e sostituzione
  • Regex Trova e sostituisci: Modificare i tag HTML
  • Regex Trova e sostituisci: Pulire il formato dei dati
  • Script Regex: Automatizza le attività ripetitive con gli script
  • Casi d’uso pratici: analizzare i log
  • Casi d’uso pratici: convalida dei dati
  • Casi d’uso pratici: manipolazione del testo
  • Altri esempi che utilizzano le regex in stile Perl

 

Esempio 3: estrazione di date e numeri di contatto da un testo con UltraEdit

Questo esempio utilizza una regex simile a quella dei primi due esempi su un blocco di testo, mostrando quanto possa essere flessibile con vari tipi di dati in ingresso. Guardalo in azione.

Esempio di regex di Ultraedit

\d{2}\/\d{2}\/\d{4}

Regex per trovare le date nel testo

\$?\d{1,3}(?:\d{3})*(?:\,\d{2})?

Regex per la corrispondenza di valori di valuta, in particolare formattati come dollari USA.

Esempio 4: Rimozione di tag, attributi e valori HTML (<>,</>) dal testo in UltraEdit

rimuovere i tag html con la regex

<[^>|+>

Una semplice regex che viene utilizzata per sostituire tutte le istanze di testo tra i caretteri (ad esempio < p> text < p/>) per trasformare l’HTML in testo semplice. La schermata mostra la web app regex101 integrata come finestra nell’editor UE.

 

Esempio 5: Corrispondenza dei campi .csv e scambio delle loro posizioni

file csv di esempio

For Find: 
^((?:[^,]+?,){1})([^,]+?,)

For replace/swap:  
\2\1

Queste due regex trovano i primi due campi di un file .csv e ne scambiano le posizioni. Utilizza la regex Trova e Sostituisci.

file csv di esempio

Sintesi:

L’esempio 3 mostra l’adattabilità della regex a diversi tipi di input: puoi estrarre date e numeri di contatto indipendentemente dalla lunghezza e dalla struttura del testo. L’esempio 4 si concentra sulla rimozione dei tag HTML per convertire il contenuto HTML in testo normale. Infine, l’esempio 5 riguarda la ricerca e lo scambio di posizioni dei campi in un file CSV, evidenziando le capacità della regex nella riformattazione e nell’organizzazione dei dati.

Gli ultimi tre esempi mostrano la flessibilità delle operazioni regex. Dimostrano che, se impostate correttamente, possono analizzare blocchi di dati non strutturati e trovare con precisione ciò che stai cercando.

file csv di esempio
Altre espressioni regex comuni condivise nel webinar.

Altri strumenti utili per gestire le regex:

 

Conclusione

In conclusione, le espressioni regolari sono uno strumento potente che può migliorare notevolmente la tua capacità di manipolare e analizzare i dati di testo.

Da semplici operazioni di ricerca e sostituzione a complesse operazioni di validazione e parsing dei dati, le regex offrono una soluzione versatile per un’ampia gamma di sfide. Che tu sia uno sviluppatore che vuole ottimizzare il codice o un analista di dati che cerca di estrarre informazioni significative dai dati grezzi, la padronanza delle regex può aumentare significativamente la tua produttività ed efficienza.

Mentre continui a esplorare le funzionalità delle regex, ricorda che la pratica e la sperimentazione sono fondamentali per sbloccare tutto il loro potenziale. Per coloro che sono interessati ad approfondire la questione, è consigliabile guardare la guida webinar per trovare esempi pratici e reali e approfondimenti di esperti. E per i principianti, non perdetevi la sezione dedicata a Utilizzando modelli AI e LLM per creare regex per te!

E se stai lavorando con il testo e vuoi sperimentare le regex in modo più approfondito, scopri di più su UltraEdit e usalo per aumentare la tua produttività.

Scarica UltraEdit per una prova gratuita di 30 giorni con tutte le funzioni.