Le espressioni regolari, comunemente note come regex o regexp, sono strumenti popolarmente usati nel mondo della programmazione e dell'elaborazione del testo. Un'espressione regolare è una sequenza di caratteri che forma un modello di ricerca. Questi schemi vengono utilizzati per cercare, estrarre o manipolare il testo in base a regole specifiche.
Cos'è un'espressione regolare?
Il regex (in inglese, espressioni regolari) sono le unità di descrizione delle lingue regolari, che sono incluse nelle lingue formali così chiamate. Sono uno strumento chiave di informatica teorica, che, tra le altre cose, stabilisce le basi per lo sviluppo e l'esecuzione di programmi per computer, nonché per la costruzione del compilatore necessario per esso. Questo è il motivo per cui le espressioni regolari, chiamate anche Regx e basate su regole sintattiche chiaramente definite, sono utilizzate principalmente nel campo dello sviluppo del software.
Per ogni regex c'è un automobile finito così chiamato (noto anche come macchina a stato finito) che accetta il linguaggio specificato dall'espressione e che, con l'aiuto della costruzione di Thompson, si sviluppa da un'espressione regolare. D'altra parte, per ogni automobile finito c'è anche un'espressione regolare che descrive il linguaggio accettato dall'automa. Questo può essere generato bene con l'algoritmo Kleene o con l'eliminazione degli stati.
Un esempio emblematico dell'uso di espressioni regolari nella tecnologia dell'informazione si trova nella funzione "Ricerca e sostituire" degli editori di testo. Questa funzionalità, implementata per la prima volta negli anni '60 da Ken Thompson (co-creatore di GO), una cifra eccezionale nell'informatica e uno degli sviluppatori del sistema operativo UNIX, ebbe il suo inizio nell'editore di testo che fu esteso in seguito a i suoi successori.
La funzione di ricerca e sostituzione basata su espressioni regolari consente agli utenti di cercare sequenze di caratteri specifiche in un testo e, se lo desiderano, sostituirli con un'altra sequenza di caratteri. Ciò non solo semplifica il processo di modifica e manipolazione del testo, ma fornisce anche un potente strumento per apportare cambiamenti enormi e precisi nei documenti.
Ad esempio, supponiamo che un utente debba correggere costantemente l'ortografia di una parola scarsamente scritta in un intero documento. Usando espressioni regolari, potevano cercare tutte le istanze della parola male scritte e sostituirle contemporaneamente con l'ortografia corretta, invece di apportare manualmente correzioni una per una.
Questo approccio non solo consente di risparmiare tempo e sforzo, ma consente anche compiti complessi di gestione dei testo in modo efficiente e uniforme. La capacità di Ken Thompson di implementare questa funzionalità nei primi redattori di testo ha segnato l'inizio dell'integrazione di espressioni regolari negli strumenti informatici fondamentali e ha sopportato come una tecnica essenziale nello sviluppo e nell'amministrazione del software fino ad oggi.
Come funziona un'espressione regolare?
È possibile formare un'espressione regolare, o esclusivamente da caratteri normali (come ABC) o da una combinazione di caratteri normali e metacaractere (come AB*C). I metachatters descrivono alcune costruzioni o disposizioni dei personaggi: ad esempio, se un personaggio dovrebbe essere all'inizio della linea o se un personaggio deve solo apparire o che può apparire esattamente una volta, più o così. Entrambi gli esempi di espressioni regolari funzionano, ad esempio, come segue:
ABC. Il semplice modello Regx ABC richiede una coincidenza esatta. Pertanto, si cercheranno catene di personaggi che non solo contengano i personaggi "ABC", ma appaiono anche in quell'ordine. Una domanda come "Conosci ABC Square?" Offre la coincidenza ricercata da questa espressione.
ab*c. Le espressioni regolari con personaggi speciali funzionano in modo diverso, poiché non solo le coincidenze esatte saranno ricercate, ma anche scenari speciali. In questo caso, l'asterisco fa sì che la ricerca si concentri su personaggi di personaggi che iniziano con la lettera "A" e finiscono con la lettera "C" e tra un numero di caratteri "B". Pertanto, entrambi i personaggi "ABC", come i personaggi "AbbBBC" e "Cbbabbcba" saranno mostrati come coincidenza.
Quali sono le regole sintattiche applicabili alle espressioni regolari?
Le espressioni regolari possono essere utilizzate in una varietà di lingue, come Perl, Python, Ruby, JavaScript, XML o HTML e i loro usi e funzioni possono variare in modo significativo. Ad esempio, in JavaScript, i modelli Regx vengono utilizzati in metodi a catena come Search (), Match () o Sostituisci (), mentre nei documenti XML vengono utilizzate espressioni regolari per limitare gli elementi di contenuto. Nonostante queste differenze in uso, in termini di sintassi, ci sono
Una notevole uniformità tra i vari linguaggi di programmazione e le lingue marcate per quanto riguarda le espressioni regolari.
Pertanto, un'espressione regolare può essere formata da un massimo di tre parti, indipendentemente dalla lingua in cui verrà utilizzata:
Pattern (modello di ricerca) L'elemento centrale è il modello, cioè il modello di ricerca generale. Come abbiamo spiegato in precedenza, può essere formato da caratteri semplici o da una combinazione di personaggi semplici e speciali.
Delimitatore (delimitatore) L'inizio e la fine del modello sono identificati con delimitatori. I delimitatori sono fondamentalmente tutti i caratteri non alfanumerici (tranne la barra diagonale inversa). Ad esempio, per PHP i pad (#pattern#), i segni percentuali (%pattern%), il più segno (+pattern+) o i tildes (~ pattern ~) sono delimitatori. La maggior parte delle lingue usa già citazioni ("pattern") o barre diagonali (/pattern/).
I modificatori di modificatore (modificatore) possono essere aggiunti a un modello di ricerca per modificare l'espressione regolare. Un esempio è il modificatore I, che annulla la distinzione tra maiuscolo e minuscolo. Garantisce che il capitale e il minuscolo siano presi in considerazione e che valgono per impostazione predefinita per tutte le espressioni regolari.
Successivamente, elenchiamo alcuni dei caratteri speciali di sintassi che i modelli possono espandersi con opzioni specifiche:
Funzione di sintassi speciale caratteri speciali
[] | Le parentesi quadrate identificano una classe di caratteri che rappresenta sempre un singolo carattere in uno schema di ricerca. |
() | Le parentesi identificano un gruppo di caratteri formati da uno o più personaggi e che possono operare all'interno degli altri. |
- | Funziona come una specifica dell'area (di […] a […]) quando è tra due caratteri normali. |
^ | Limita la ricerca all'inizio di una riga (un'altra funzione: elemento di negazione nelle classi caratteri). |
$ | Limita la ricerca alla fine di una riga. |
. | Equivalente a qualsiasi personaggio. |
* | Il numero di carattere, della classe o del gruppo situato prima che l'asterisco possa essere casuale (zero incluso). |
+ | Il carattere, la classe o il gruppo prima di un altro segno dovrebbe apparire almeno una volta. |
? | Il personaggio, la classe o il gruppo prima del segno di interrogatorio è facoltativo e può apparire al massimo una volta. |
{n} | Il carattere, la classe o il gruppo precedente appare esattamente n volte. |
{n, m} | Il carattere, la classe o il gruppo appare almeno n volte e alla maggior parte delle volte. |
{n,} | Il carattere, la classe o il gruppo precedente appare almeno n volte o frequentemente. |
\b | Tiene conto del limite di parole durante la ricerca. |
\B | Ignora il limite di parole durante la ricerca. |
\d | Qualsiasi cifra; Abbreviazione per caratteri [0-9]. |
\D | Qualsiasi non -digit; Abbreviazione per personaggi [^0-9]. |
\w | Qualsiasi carattere alfanumerico; Abbreviazione per la classe di caratteri [A-Z_0-9]. |
\W | Qualsiasi carattere non alfanumerico; Abbreviazione per la classe del personaggio [^\ W]. |
Esempi di utilizzo:
Formato e -mail:
Regex Esempio:
^[a-za-z0-9 ._%+-]+@[a-za-z0-9 .-]+\. [a-za-z] {2,} $
Questa espressione regolare convalida un formato dell'indirizzo e -mail.
Cerca numeri di telefono:
Regex Esempio:
\ d {3}-\ d {3}-\ d {4}
Trova i numeri di telefono nel formato XXX-XXX-XXXX.
Estrazione dell'etichetta HTML:
Regex Esempio:
<\ s*([a-z]+) ([^>]*)>
Estrai etichette HTML e i suoi attributi di una catena di testo.
Aree di utilizzo:
Convalida dei dati: le espressioni regolari sono essenziali per convalidare i formati specifici, come indirizzi e -mail, numeri di telefono o codici postali.
Ricerca ed estrazione dei dati: sono ampiamente utilizzati per cercare ed estrarre informazioni specifiche da set o documenti di dati.
Gestione del testo: gestione del testo che facilitare quando si eseguono sostituzioni, eliminazioni o trasformazioni basate su schemi definiti.
Analisi dei registri e file di testo: negli ambienti di sviluppo e amministrazione dei sistemi, vengono utilizzati per analizzare record e file di testo alla ricerca di schemi specifici.
Sviluppo del software: le espressioni regolari sono strumenti preziosi nello sviluppo del software per eseguire ricerche efficienti e manipolazione delle catene di testo.
In conclusione, le espressioni regolari sono uno strumento versatile e potente nel campo della programmazione e dell'elaborazione del testo. Comprendendo e dominando la loro sintassi, gli sviluppatori possono eseguire complesse ricerche, validazione e manipolazione dei dati in modo efficiente e preciso.