La guida per principianti alle espressioni regolari

Intro To Regex Featured

Hai mai provato a trovare un modello ricorrente in un testo? Potresti aver usato qualcosa come la funzione di ricerca nel tuo browser o nel tuo elaboratore di testi, ma quando hai bisogno di trovare qualcosa di più complesso, può essere come cercare un ago in un pagliaio.

Fortunatamente, c’è un modo per individuare modelli precisi nel testo fino al singolo carattere. Si chiama espressioni regolari (RegEx) e ti consente di diventare un maestro nella ricerca attraverso il testo.

Leggi anche: Come utilizzare le espressioni regolari per migliorare la produttività nelle tue attività quotidiane

Dove posso usare RegEx?

Anche se Unix e Linux le hanno rese popolari, le espressioni regolari sono disponibili in una varietà di pacchetti, incluso Microsoft Word.

regular-expressions

Le espressioni regolari sono utilizzate soprattutto in diversi programmi Linux noti, tra cui grep, Awk e Sed.

Ad esempio, potresti voler controllare i dispositivi USB sul tuo PC. Usando lspci, vedrai un elenco di tutti i dispositivi e dovrai localizzare le voci USB da solo. Potresti invece usare il seguente comando per mostrare solo i dispositivi USB:

lspci|grep"USB"

Questo è il più semplice esempio di RegEx in azione. È il modo più popolare di utilizzare le espressioni regolari nel terminale, ma non è l’unico. Oggi puoi trovare il supporto per RegEx in molti tipi diversi di software, dai editor di testo ai gestori di file.

Trovare modelli

Probabilmente hai usato il carattere *, che funge da carattere jolly quando selezioni file o cartelle nel terminale. Ad esempio, per elencare tutti i file JPG in una cartella, potresti usare:

ls*.jpg

L’equivalente RegEx di quanto sopra sarebbe:

ls|grep-E"\.jpg"

Intro To Regex Filter Jpgs

Per cercare file sia jpg che png, usa:

ls|grep-E"(\.jpg|\.png)"

Intervalli

Se vuoi cercare un intervallo specifico di caratteri anziché un modello, puoi farlo definendolo tra parentesi quadre. Se, ad esempio, usi [a-z] come tuo modello, questo corrisponderebbe a qualsiasi stringa composta da lettere minuscole dell’alfabeto.

Come potresti aver indovinato, [A-Z] selezionerebbe solo lettere maiuscole. Per scegliere qualsiasi intervallo di lettere, sia maiuscole che minuscole, l’espressione cambierebbe in [a-zA-Z].

Per localizzare un numero specifico di istanze del tuo modello, puoi indicarlo tra parentesi graffe. {5} restituirebbe cinque occorrenze del tuo modello. Puoi anche usare intervalli di numeri, quindi {5,10} ti presenterebbe da cinque a dieci istanze.

Metacaratteri

Nelle espressioni regolari, puoi anche cercare parti di una stringa con due caratteri chiamati metacaratteri. Sono simili alle corrispondenze dei caratteri jolly che potresti aver usato nella shell.

Il principale è il punto semplice, che rappresenta qualsiasi altro singolo carattere. Se usassi il modello c.ll, corrisponderebbe a “cell” ma anche a “cull” e “call”.

Inserendo un asterisco dopo un punto, puoi usarlo per corrispondere a un numero infinito di caratteri. Ad esempio, .*board sarà una corrispondenza sia per “keyboard” che per “skateboard”, anche se “key” e “skate” hanno un numero diverso di lettere.

Escape

Potresti aver notato che nel nostro esempio, dove abbiamo selezionato diversi tipi di file immagine, abbiamo usato le barre rovesciate prima del punto (“.jpg”). È così che scappi i caratteri speciali in RegEx.

Se non le usassimo, il nostro modello non corrisponderebbe solo alle estensioni dei file, come “.jpg” e “.png,” ma corrisponderebbe anche a “ajpg” e “opng.” Ricorda, . è un carattere jolly che corrisponde a qualsiasi carattere.

Ancore e limiti

Le ancore e i limiti ti consentono di definire più precisamente ciò che stai cercando.

Per trovare solo la parola singola “computer,” senza altri caratteri attaccati prima o dopo, dovresti definire il pattern come \.

Puoi anche cercare specificamente modelli che appaiono all’inizio o alla fine della riga. Questo si ottiene con i caratteri ^ e $ rispettivamente.

Quindi, se volessi trovare solo le voci in cui la parola “computer” appare all’inizio di una riga, il tuo pattern assomiglierebbe a ^computer. Per l’opposto, quando si trova alla fine della riga, il pattern cambierebbe in computer$.

Queste sono le semplici regole di RegEx, che puoi anche combinare per trovare esattamente i modelli che stai cercando. Puoi cercare intervalli di caratteri all’inizio di una riga o parole alternate alla fine, date specifiche, o un intervallo di anni, utilizzando una singola stringa di testo.

Non dimenticare di dare un’occhiata alla nostra scheda informativa sulle espressioni regolari per padroneggiare le espressioni regolari.