Se sei un programmatore, è probabile che tu sappia già cosa sono le espressioni regolari (regex). I pattern Regex sono stati implementati in quasi tutti i linguaggi di programmazione tradizionali, ma la potenza e la versatilità di questi pattern non sono riconosciute dalla maggior parte degli sviluppatori.

Questa guida riguarda le espressioni regolari e come puoi usarle nel linguaggio di programmazione Python.

Cosa sono le espressioni regolari?

Le espressioni regolari sono modelli che aiutano un utente a trovare combinazioni di caratteri in file di testo e stringhe. È possibile utilizzare espressioni regolari per filtrare o trovare uno schema specifico nell'output di un comando o di un documento.

Esistono vari casi d'uso delle espressioni regolari, il più famoso dei quali il comando grep in Linux. Altre applicazioni includono il filtraggio delle informazioni come l'estrazione di indirizzi e-mail e numeri di telefono da un dump di dati.

Il motivo principale per cui molti sviluppatori si allontanano dalle espressioni regolari è la mancanza di consapevolezza del potere del pattern matching. Alcuni trovano persino le espressioni regolari confuse a causa dell'elevata quantità di caratteri e sequenze utilizzate nei modelli.

instagram viewer

Qualunque sia la ragione, le espressioni regolari sono e saranno uno degli aspetti più importanti della programmazione che tutti dovrebbero conoscere.

Espressioni regolari: caratteri e sequenze corrispondenti

Regex è una lingua completamente nuova in sé. Un motore di regex interpreta schemi composti da diversi caratteri dotati di significati specifici. I letterali di base come i caratteri alfanumerici corrispondono a se stessi. Ma caratteri complessi come $, *, +, {, ecc. aiuto nella corrispondenza di ordine superiore.

  1. Asterisco (*): Corrisponde al carattere precedente zero o più volte. Il significato letterale del carattere sarebbe "Elemento moltiplicato n volte". Ad esempio, se l'espressione regolare è abc *, le stringhe corrispondenti saranno ab, abc, abcc, abccc, abcccc, ecc. L'espressione [avanti Cristo]* corrisponderà a bc, bcbc, bcbc, ecc.
  2. Più (+): Corrisponde al carattere precedente una o più volte. Il funzionamento del + carattere è simile a *, ma il + carattere omette il modello se il carattere non compare. Per esempio, abc + corrisponderà ad abc, abcc, abccc, ecc. ma non ab.
  3. Punto interrogativo (?): Corrisponde al carattere precedente zero o una volta. Ad esempio, il modello abc? corrisponderà solo ab e abc.
  4. Tubo (|): Usato come binario O operatore. Corrisponde a uno dei caratteri che precedono e che seguono la pipe. Per esempio, a | b corrisponderà a a o b.
  5. Punto (.): Corrisponde a un personaggio la cui identità è sconosciuta. Per esempio, AC corrisponderà a aac, abc, acc, a2c e così via.
  6. Carota (^): Corrisponde al primo carattere nel pattern. Per esempio, ^ Ra corrisponderà alle parole che iniziano con RA come Rabbit, Raccoon e Random.
  7. Dollaro ($): Corrisponde all'ultimo carattere nel pattern. Per esempio, un $ corrisponderà alle parole che finiscono con un come Van, Dan e Plan.
  8. Trattino (-): Utilizzato per definire un intervallo di caratteri. Per esempio, [0-9] corrisponderà a tutti i caratteri numerici a una cifra.

Le sequenze speciali utilizzate nei modelli di espressioni regolari sono:

  1. \UN: Restituisce una corrispondenza se i caratteri successivi sono presenti all'inizio della stringa. Per esempio, \ Ahe corrisponderà alle parole che iniziano con Il come The, Them, They, ecc.
  2. \ b: Restituisce una corrispondenza se il carattere si trova all'inizio o alla fine di una parola. Per esempio, \ bmad e pazzo \ b corrisponderà a parole come fatto e nomade rispettivamente.
  3. \ B: Restituisce una corrispondenza se il carattere non viene trovato all'inizio o alla fine di una parola.
  4. \ d: Corrisponde ai caratteri numerici presenti nella stringa. Per esempio, /d* corrisponderà a numeri come 1, 12, 1232, ecc.
  5. \ D: Corrisponde ai caratteri non numerici nella stringa. / D corrisponderà a, b, c, f, ecc.
  6. \S: Corrisponde a uno spazio vuoto nel testo.
  7. \S: Corrisponde a un carattere diverso da uno spazio vuoto nel testo.
  8. \ w: Restituisce una corrispondenza se la stringa contiene caratteri alfanumerici inclusi i trattini bassi. Per esempio, \ w corrisponderà a a, b, c, d, 1, 2, 3, ecc.
  9. \ W: Restituisce una corrispondenza se la stringa non contiene caratteri alfanumerici o trattini bassi.
  10. \ Z: Corrisponde ai caratteri alla fine di una stringa. Per esempio, end \ Z corrisponderà alle parole che finiscono con fine come piegare, riparare, tendere, ecc.

Metodi Python per espressioni regolari

In Python, il ri la libreria fornisce tutte le funzioni e le utilità necessarie per implementare le espressioni regolari nei tuoi programmi. Non è necessario scaricare la libreria utilizzando pip poiché viene preinstallata con l'interprete Python.

Per importare il file ri libreria in Python, aggiungi il seguente codice al tuo script:

import re

Si noti che durante il passaggio di espressioni regolari in Python, utilizziamo stringhe grezze poiché non interpretano caratteri speciali come \ n e \ t diversamente.

Incontro()

Il re.match () in Python restituisce un oggetto regex se il programma trova una corrispondenza all'inizio della stringa specificata. Questa funzione accetta due argomenti di base:

re.match (pattern, string)

...dove modello è l'espressione regolare e corda è il testo che deve essere cercato.

Dai un'occhiata allo snippet di codice qui sotto.

import re
match = re.match (r'Word ', "Questa frase contiene una parola")
print (match)

Il r carattere prima della stringa sta per stringa non elaborata.

Produzione:

Nessuna

Il codice di cui sopra ritorna Nessuna perché parola non era presente all'inizio della stringa.

Se viene trovata una corrispondenza, è possibile stamparla utilizzando il file gruppo() metodo che appartiene all'oggetto regex.

import re
match = re.match (r'Word ', "La parola è difficile da leggere")
print (match.group (0))

Produzione:

parola

Ricerca()

Il ricerca() il metodo accetta argomenti simili a re.match (). Mentre match () restituisce solo le corrispondenze presenti all'inizio della stringa, ricerca() restituirà le corrispondenze trovate in qualsiasi indice nella stringa.

import re
match = re.search (r'Word ', "Questa frase contiene una parola. La parola è difficile da leggere. ")
print (match.group (0))

Nota che il file incontro() e ricerca() i metodi restituiranno solo una corrispondenza di pattern. Nel codice sopra citato, parola appare due volte. Ma il ricerca() funzione corrisponderà solo alla prima occorrenza della parola.

parola

Trova tutto()

Come puoi già intuire, il file trova tutto() restituisce ogni possibile corrispondenza nella stringa.

import re
match = re.search (r'Word ', "Questa frase contiene una parola. La parola è difficile da leggere. ")
per elem in match:
print (elem)

Invece di restituire un oggetto regex, la funzione findall () restituisce un elenco di tutte le corrispondenze. Puoi scorrere l'elenco utilizzando un file for loop in python.

Diviso()

Se vuoi dividere una stringa in sottostringhe usando un pattern come delimitatore, allora il Diviso() la funzione è quella che ti serve.

import re
split = re.split (r'and ', "Questa parola e quella e questa sono diverse.")
stampa (divisa)

Produzione:

["Questa parola", "quella", "questo sono diversi".]

Sub()

Il sub() Il metodo consente a un utente di sostituire una parola specifica al posto di un modello. Accetta i seguenti argomenti.

re.sub (modello, sostituzione, stringa)

Considera questo frammento di codice:

import re
risultato = re.sub (r'and ',' or ', "Dave e Harry devono essere puniti.")
stampa (risultato)

Produzione:

Dave o Harry devono essere puniti.

Compilare()

Il re.compile () metodo in ri library consente a un utente di memorizzare una versione compilata del modello di espressione regolare nella memoria. Quindi, utilizzando l'oggetto compilato, l'utente può filtrare rapidamente il dump di testo specificato per i modelli corrispondenti.

import re
pattern = re.compile ('Python')
match = pattern.findall ("Python è un ottimo linguaggio per scrivere script. Python è facile da imparare. ")
print (match)

Questa funzione viene utilizzata principalmente per salvare modelli che richiedono molte risorse e richiedono molto tempo per essere eseguiti. La compilazione e il salvataggio del pattern come oggetto in anticipo risolve questo problema.

Sfrutta la potenza di Regex con Python

Quando lavori con file di testo e output, regex è un ottimo strumento da avere a tua disposizione. È possibile scrivere rapidamente del codice per filtrare o sostituire modelli specifici nel documento.

Memorizzare tutti i personaggi e abbinare le sequenze può essere difficile se hai appena iniziato con regex. Per migliorare le espressioni regolari, fare riferimento a un elenco di caratteri, metodi e sequenze di tanto in tanto ti aiuterà sicuramente a lungo termine.

E-mail
Il Cheat Sheet di Python RegEx per i programmatori in erba

Usa questo elenco di espressioni regolari Python in modo da poter migliorare l'utilizzo di questo versatile linguaggio di programmazione.

Leggi Avanti

Argomenti correlati
  • Programmazione
  • Programmazione
  • Pitone
Circa l'autore
Deepesh Sharma (41 articoli pubblicati)

Deepesh è il Junior Editor per Linux presso MUO. Scrive contenuti informativi su Internet da oltre 3 anni. Nel tempo libero ama scrivere, ascoltare musica e suonare la chitarra.

Altro da Deepesh Sharma

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Ancora un passo…!

Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.

.