La guida per principianti alle espressioni regolari con Python

La guida per principianti alle espressioni regolari con Python

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





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





Cosa sono le espressioni regolari?

Le espressioni regolari sono modelli che aiutano un utente ad abbinare le combinazioni di caratteri nei file di testo e nelle stringhe. È possibile utilizzare le espressioni regolari per filtrare o trovare un modello 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 confuse le espressioni regolari a causa della notevole quantità di caratteri e sequenze utilizzate nei modelli.



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

crea un file batch per eseguire il comando

Espressioni regolari: corrispondenza di caratteri e sequenze

Regex è di per sé un linguaggio completamente nuovo. Un motore regex interpreta modelli 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. aiutano 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. Altro (+): Corrisponde al carattere precedente una o più volte. Il funzionamento del + il carattere è simile a * , ma il + carattere omette il modello se il carattere non si verifica. 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 ad ab e abc.
  4. Tubo (|): Usato come binario O operatore. Corrisponde a uno dei caratteri che precedono e seguono la barra verticale. 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 modello. Per esempio, ^Ra abbinerà le parole che iniziano con Fuori come Rabbit, Raccoon e Random.
  7. Dollaro ($): Corrisponde all'ultimo carattere nel modello. Per esempio, un $ abbinerà le parole che terminano 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. A: Restituisce una corrispondenza se i caratteri successivi sono presenti all'inizio della stringa. Per esempio, AThe abbinerà le 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 abbinerà 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 non di spaziatura nel testo.
  8. in: Restituisce una corrispondenza se la stringa contiene caratteri alfanumerici inclusi i trattini bassi. Per esempio, in corrisponderà a, b, c, d, 1, 2, 3, ecc.
  9. IN: Restituisce una corrispondenza se la stringa non contiene caratteri alfanumerici o caratteri di sottolineatura.
  10. INSIEME A: Corrisponde ai caratteri alla fine di una stringa. Per esempio, fine abbinerà le parole che terminano con fine come piegare, riparare, tendere, ecc.

Metodi Python per le espressioni regolari

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





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

import re

Nota che durante il passaggio di espressioni regolari in Python, usiamo stringhe non elaborate poiché non interpretano caratteri speciali come e T diversamente.

Incontro()

Il ri.match() Il metodo 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', 'This sentence contains a Word')
print(match)

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

Produzione:

None

Il suddetto codice ritorna Nessuno perché Parola non era presente all'inizio della stringa.

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

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Produzione:

Word

Il ricerca () Il metodo accetta argomenti simili come 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', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

Nota che il incontro() e ricerca() i metodi restituiranno solo una corrispondenza del modello. Nel suddetto codice, Parola appare due volte. Ma il ricerca() funzione corrisponderà solo alla prima occorrenza della parola.

Word

Trova tutto()

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

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for 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 usando a per il ciclo 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', 'This word and that and this are different.')
print(split)

Produzione:

['This word', 'that', 'this are different.']

Sub()

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

re.sub(pattern, replacement, string)

Considera questo frammento di codice:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Produzione:

Dave or Harry must be punished.

Compilare()

Il ri.compila() metodo nel Rif La libreria consente a un utente di archiviare in memoria una versione compilata del modello di espressione regolare. Quindi, utilizzando l'oggetto compilato, l'utente può filtrare rapidamente il dump del testo specificato per i modelli corrispondenti.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

Questa funzione viene utilizzata principalmente per salvare modelli che richiedono molte risorse e che richiedono molto tempo per essere eseguiti. La compilazione e il salvataggio del modello 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. Puoi scrivere rapidamente del codice per filtrare o sostituire modelli specifici nel documento.

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

Condividere Condividere Tweet E-mail Il cheat sheet di Python RegEx per programmatori in erba

Usa questo elenco di espressioni regolari Python in modo che tu possa migliorare nell'uso di questo versatile linguaggio di programmazione.

Leggi Avanti
Argomenti correlati
  • Programmazione
  • Programmazione
  • Pitone
Circa l'autore Deepesh Sharma(79 articoli pubblicati)

Deepesh è l'editor junior per Linux di MUO. Scrive guide informative su Linux, con l'obiettivo di fornire un'esperienza felice a tutti i nuovi arrivati. Non sono sicuro dei film, ma se vuoi parlare di tecnologia, è il tuo ragazzo. Nel suo tempo libero, puoi trovarlo a leggere libri, ascoltare diversi generi musicali o suonare la sua chitarra.

Altro da Deepesh Sharma

Iscriviti alla nostra Newsletter

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

Clicca qui per iscriverti