TechTarget

Come usare le regex in PowerShell



Indirizzo copiato

Con una serie caratteri che indicano un modello corrispondente, si può trovare o sostituire la convalida dell’input. È ciò che accade per esempio anche con regex in PowerShell.

Pubblicato il 23 lug 2024



4536

A volte per trovare informazioni specifiche all’interno del testo o dell’input si perde tempo… e anche la pazienza. Ma esiste un modo per semplificare questo processo e alla base ci sono le “espressioni regolari” note come regex. Si tratta di una sequenza di caratteri che insieme definiscono un modello da abbinarvi. Per esempio, sono uno strumento usato spesso per convalidare l’input o per individuare informazioni specifiche all’interno di una lunga stringa di testo. Le si trova anche come strumento per eseguire la manipolazione delle stringhe.

Regex non è specifico di PowerShell: sono molti i linguaggi di programmazione moderni che ne supportano nativamente l’uso.

Le espressioni regolari possono essere complesse, ma ci sono alcuni elementi più comuni e che è utile conoscere

  • Un asterisco — * — è un carattere jolly; rappresenta qualsiasi singolo carattere
  • Le parentesi — [] — indicano che un carattere deve corrispondere ai caratteri inclusi tra parentesi. Ad esempio, [abc] indica che il carattere deve essere A, B o C.
  • Un simbolo di bracket tra parentesi — [^] — funziona di fronte ai normali caratteri tra parentesi. Piuttosto che dichiarare che un carattere deve corrispondere a quei caratteri che appaiono tra parentesi, la bracket indica che un carattere non può corrispondere a nessuno dei caratteri tra parentesi.

Estrazione dei dati

In uno script di PowerShell, le espressioni regolari consentono di individuare ed estrarre i dati. Per esempio, è possibile creare uno script che individui dati specifici all’interno di un file di registro o uno che estrae informazioni da una pagina Web.

È semplice creare uno script PowerShell che legge un file di testo e cerca una stringa, per esempio un indirizzo e-mail — all’interno di quel file. Non serve usare espressioni regolari per individuare i dati all’interno di un file di testo; diventano utili in situazioni in cui non conosci il testo esatto che devi estrarre. Si può usare la regex se il file di esempio contiene un indirizzo e-mail particolare ma non sempre accade e non è necessario.

Gli indirizzi e-mail aderiscono a un formato specifico. Contengono un po’ di testo, un segno @, un altro pezzo di testo, un punto e un nome di dominio di primo livello. Questa formattazione standardizzata consente di individuare un indirizzo e-mail all’interno di un file, anche se non si sa esattamente quale sia l’indirizzo.

Se in una parte del modello inseriamo \.[ A-Za-z]{2,}\b’ indichiamo a PowerShell che la stringa di testo che si sta cercando – l’indirizzo e-mail – dovrebbe terminare con un punto, due o più caratteri e un’interruzione di parole. Può succedere quando alcuni indirizzi e-mail utilizzano nomi di dominio di primo livello a tre caratteri, come .com, .gov o .edu, ma altri usano due caratteri, come .ca o .br. Dire a PowerShell di cercare almeno due caratteri consente al modello di ricerca di trovare indirizzi e-mail con entrambi i tipi di nome di dominio di primo livello.

Si possono anche usare le espressioni regolari come strumento per convalidare l’input. Supponiamo di aver creato uno script di PowerShell che chiede all’utente di immettere un indirizzo di posta elettronica. È possibile utilizzare la corrispondenza dei modelli delle espressioni regolari come un modo per determinare se l’input dell’utente aderisce al formato utilizzato dagli indirizzi e-mail.

Manipolazione delle stringhe

Si possono usare le espressioni regolari per convalidare le stringhe, ma anche per manipolarle in vari modi e per vari motivi. Può accadere in combinazione con la convalida dell’input. In alcuni casi, se si rileva un input non valido, è possibile utilizzare la manipolazione delle stringhe per correggerlo automaticamente.

Per esempio, se un nome ha un’ortografia un po’ insolita – Brien, piuttosto che Brian – un semplice script PowerShell controlla eventuali errori di ortografia e li corregge:

Si può sviluppare uno script che chiede all’utente di digitare il nome e il testo immesso viene memorizzato in una variabile denominata $Name. Lo script esegue quindi la corrispondenza dei modelli per rilevare i caratteri non validi nella terza e quarta posizione. In particolare, si va in cerca delle lettere in posizioni sospette e, se viene rilevato un errore di ortografia, viene corretto automaticamente.

Questo approccio potrebbe essere utile in una situazione in cui un utente deve inserire un numero di prodotto in uno script PowerShell, sapendo che inizia sempre con la lettera P, per convalidarlo automaticamente.

Articoli correlati

Articolo 1 di 3