Python RegEx: re.match(), re.search(), re.findall() con Esempio
In cosa consiste l'espressione regolare Python?
A Espressione regolare (RE) in un linguaggio di programmazione รจ una stringa di testo speciale utilizzata per descrivere un modello di ricerca. ร estremamente utile per estrarre informazioni da testo come codice, file, registro, fogli di calcolo o persino documenti.
Durante l'utilizzo di Python La prima cosa da riconoscere nell'espressione regolare รจ che tutto รจ essenzialmente un carattere e stiamo scrivendo modelli per corrispondere a una sequenza specifica di caratteri denominata anche stringa. Le lettere Ascii o latine sono quelle che si trovano sulle tue tastiere e Unicode viene utilizzato per abbinare il testo straniero. Include cifre, segni di punteggiatura e tutti i caratteri speciali come $#@!%, ecc.
Ad esempio, a Python l'espressione regolare potrebbe dire a un programma di cercare un testo specifico nella stringa e quindi di stampare il risultato di conseguenza. L'espressione puรฒ includere
- Corrispondenza del testo
- Ripetizione
- ramificazione
- Composizione del modello ecc.
Espressione regolare o RegEx in Python รจ indicato come RE (RE, regex o pattern regex) tramite cui vengono importate re modulo. Python supporta l'espressione regolare attraverso le librerie. RegEx in Python supporta varie cose come Modificatori, identificatori e caratteri di spazio bianco.
| Identificatori | modificatori | Caratteri dello spazio bianco | Fuga necessaria |
|---|---|---|---|
| \d= qualsiasi numero (una cifra) | \d rappresenta una cifra. Esempio: \d{1,5} dichiarerร una cifra compresa tra 1,5 come 424,444,545 ecc. | \n = nuova riga | . + * ? [] $ ^ () {} | \ |
| \D= tutto tranne un numero (una non-cifra) | + = corrisponde a 1 o piรน | \s= spazio | |
| \s = spazio (tabulazione, spazio, nuova riga ecc.) |
? = corrisponde a 0 o 1 | \t =tab | |
| \S= tutto tranne uno spazio | * = 0 o piรน | \e = fuga | |
| \w = lettere (corrisponde a caratteri alfanumerici, incluso "_") | $ corrisponde alla fine di una stringa | \r = ritorno a capo | |
| \W =tutto tranne lettere (corrisponde a un carattere non alfanumerico escluso "_") | ^ corrisponde all'inizio di una stringa | \f= avanzamento modulo | |
| . = tutto tranne le lettere (punti) | | corrisponde a o x/y | ------ | |
| \b = qualsiasi carattere tranne la nuova riga | [] = intervallo o โvarianzaโ | ------ | |
| \. | {x} = questa quantitร di codice precedente | ------ |
Sintassi delle espressioni regolari (RE).
import re
- Modulo โreโ incluso con Python utilizzato principalmente per la ricerca e la manipolazione di stringhe
- Utilizzato frequentemente anche per la pagina web โraschiatura" (estrarre grandi quantitร di dati dai siti Web)
Inizieremo il tutorial sulle espressioni con questo semplice esercizio utilizzando le espressioni (w+) e (^).
Esempio di espressione w+ e ^
- โ^โ: Questa espressione corrisponde all'inizio di una stringa
- โw+โ: Questa espressione corrisponde al carattere alfanumerico nella stringa
Qui vedremo a Python RegEx Esempio di come possiamo usare l'espressione w+ e ^ nel nostro codice. Copriamo la funzione re.findall() in Python, piรน avanti in questo tutorial, ma per un po' ci concentreremo semplicemente sulle espressioni \w+ e \^.
Ad esempio, per la nostra stringa "guru99, l'istruzione รจ divertente" se eseguiamo il codice con w+ e^, verrร restituito "guru99".
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+",xx) print(r1)
Ricorda, se rimuovi +segno da w+, l'output cambierร e fornirร solo il primo carattere della prima lettera, ovvero [g]
Esempio di espressione \s nella funzione re.split
- โsโ: questa espressione viene utilizzata per creare uno spazio nella stringa
Per capire come funziona questa RegEx Python funziona, iniziamo con un semplice Python RegEx Esempio di funzione divisa. Nell'esempio, abbiamo diviso ogni parola utilizzando la funzione โre.splitโ e allo stesso tempo abbiamo utilizzato l'espressione \s che consente di analizzare separatamente ogni parola nella stringa.
Quando esegui questo codice ti darร l'output ['noi', 'siamo', 'splitting', 'the', 'words'].
Ora vediamo cosa succede se rimuovi "\" da s. Non c'รจ l'alfabeto 's' nell'output, questo perchรฉ abbiamo rimosso '\' dalla stringa e valuta la "s" come un carattere regolare e quindi divide le parole ovunque trovi "s" nella stringa.
Allo stesso modo, ci sono serie di altri Python espressione regolare che puoi utilizzare in vari modi Python come \d,\D,$,\.,\b, ecc.
Ecco il codice completo
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+", xx) print((re.split(r'\s','we are splitting the words'))) print((re.split(r's','split the words')))
Successivamente, vedremo i tipi di metodi utilizzati con le espressioni regolari in Python.
Utilizzo dei metodi delle espressioni regolari
Il pacchetto "re" fornisce diversi metodi per eseguire effettivamente query su una stringa di input. Vedremo le modalitร di re in Python:
- ri.match()
- ricerca()
- re.trovall()
Note:: In base alle espressioni regolari, Python offre due diverse operazioni primitive. Il metodo match verifica la corrispondenza solo all'inizio della stringa, mentre search verifica la corrispondenza in qualsiasi punto della stringa.
ri.match()
ri.match() funzione di re-in Python cercherร il modello di espressione regolare e restituirร la prima occorrenza. IL Python Il metodo RegEx Match verifica la corrispondenza solo all'inizio della stringa. Pertanto, se viene trovata una corrispondenza nella prima riga, restituisce l'oggetto corrispondenza. Ma se viene trovata una corrispondenza in qualche altra riga, il file Python La funzione RegEx Match restituisce null.
Ad esempio, si consideri il seguente codice di Python funzione re.match(). L'espressione "w+" e "\W" corrisponderร alle parole che iniziano con la lettera "g" e successivamente tutto ciรฒ che non inizia con "g" non verrร identificato. Per verificare la corrispondenza di ciascun elemento nell'elenco o nella stringa, eseguiamo il forloop in this Python re.match() Esempio.
re.search(): ricerca di pattern nel testo
ricerca() la funzione cercherร il modello di espressione regolare e restituirร la prima occorrenza. A differenza di Python re.match(), controllerร tutte le righe della stringa di input. IL Python La funzione re.search() restituisce un oggetto di corrispondenza quando viene trovato il modello e "null" se il modello non viene trovato
Come utilizzare la ricerca()?
Per utilizzare la funzione search(), รจ necessario importare Python re modulo prima e poi eseguire il codice. IL Python La funzione re.search() prende il โmodelloโ e il โtestoโ da scansionare dalla nostra stringa principale
Ad esempio qui cerchiamo due stringhe letterali โSoftware testingโ โguru99โ, in una stringa di testo โSoftware Collaudo รจ divertenteโ. Per "test del software" abbiamo trovato la corrispondenza, quindi restituisce l'output di Python re.search() Esempio come "trovata corrispondenza", mentre per la parola "guru99" non รจ stato possibile trovare la stringa, quindi restituisce l'output come "Nessuna corrispondenza".
re.trovall()
trova tutto() Il modulo viene utilizzato per cercare "tutte" le occorrenze che corrispondono a un determinato modello. Al contrario, il modulo search() restituirร solo la prima occorrenza che corrisponde al modello specificato. findall() ripeterร tutte le righe del file e restituirร tutte le corrispondenze di pattern non sovrapposte in un unico passaggio.
Come utilizzare re.findall() in Python?
Qui abbiamo un elenco di indirizzi e-mail e vogliamo che tutti gli indirizzi e-mail vengano recuperati dall'elenco, utilizziamo il metodo re.findall() in PythonTroverร tutti gli indirizzi e-mail dall'elenco.
Ecco il codice completo per l'esempio di re.findall()
import re
list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
z = re.match("(g\w+)\W(g\w+)", element)
if z:
print((z.groups()))
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ')
if re.search(pattern, text):
print('found a match!')
else:
print('no match')
abc = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print(email)
Python Bandiere
Molti Python I metodi Regex e le funzioni Regex accettano un argomento opzionale chiamato Flags. Questi flag possono modificare il significato del dato Python Modello regex. Per capirli vedremo uno o due esempi di queste bandiere.
Varie bandiere utilizzate Python inclusi
| Sintassi per i flag Regex | Cosa fa questa bandiera? |
|---|---|
| [re.M] | Fai in modo che l'inizio/fine consideri ogni riga |
| [ri.I] | Ignora il caso |
| [ri.S] | Fare [ . ] |
| [re.U] | Make { \w,\W,\b,\B} segue le regole Unicode |
| [re.L] | Fai in modo che {\w,\W,\b,\B} segua la locale |
| [ri.X] | Consenti commento in Regex |
Esempio di re.M o flag multilinea
In multiline il carattere di pattern [^] corrisponde al primo carattere della stringa e all'inizio di ogni riga (immediatamente dopo ogni nuova riga). Mentre l'espressione small โwโ viene utilizzata per contrassegnare lo spazio con caratteri. Quando esegui il codice la prima variabile โk1โ stampa solo il carattere 'g' per la parola guru99, mentre quando aggiungi il flag multiline, recupera i primi caratteri di tutti gli elementi nella stringa.
Ecco il codice
import re xx = """guru99 careerguru99 selenium""" k1 = re.findall(r"^\w", xx) k2 = re.findall(r"^\w", xx, re.MULTILINE) print(k1) print(k2)
- Abbiamo dichiarato la variabile xx per la stringa "guru99โฆ. careerguru99โฆ.selenioโ
- Esegui il codice senza utilizzare flag multilinea, fornisce l'output solo "g" dalle righe
- Esegui il codice con il flag "multiline", quando stampi 'k2' restituisce l'output come 'g', 'c' e 's'
- Quindi, la differenza che possiamo vedere dopo e prima dell'aggiunta di piรน righe nell'esempio sopra.
Allo stesso modo, puoi anche utilizzare altri Python flag come re.U (Unicode), re.L (Segui locale), re.X (Consenti commento), ecc.
Python 2 Esempio
I codici sopra riportati sono Python 3 esempi, se vuoi correre Python 2 Si prega di considerare il seguente codice.
# Example of w+ and ^ Expression
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print r1
# Example of \s expression in re.split function
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print (re.split(r'\s','we are splitting the words'))
print (re.split(r's','split the words'))
# Using re.findall for text
import re
list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
z = re.match("(g\w+)\W(g\w+)", element)
if z:
print(z.groups())
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
print 'Looking for "%s" in "%s" ->' % (pattern, text),
if re.search(pattern, text):
print 'found a match!'
else:
print 'no match'
abc = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print email
# Example of re.M or Multiline Flags
import re
xx = """guru99
careerguru99
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print k1
print k2
Verifica il tuo Python Articoli tecnici
1. Quale metodo viene utilizzato per trovare tutte le occorrenze di un pattern in una stringa?
- ricerca()
- ri.match()
- re.trovall()
- re.dividi()
2. Cosa rappresenta la classe di caratteri \d nelle espressioni regolari?
- Qualsiasi cifra (0-9)
- Qualsiasi carattere non numerico
- Qualsiasi carattere di spazio vuoto
- Qualsiasi lettera o numero
3. Quale funzione useresti per dividere una stringa in base agli spazi?
- re.split(r'\s', stringa)
- re.findall(r'\w+', stringa)
- re.match(r'\s+', stringa)
- re.split(r'\w+', stringa)
4. Qual รจ la differenza principale tra re.match() e re.search()?
- re.match() cerca un pattern all'inizio di una stringa, mentre re.search() cerca un pattern in qualsiasi punto della stringa.
- re.match() restituisce tutte le corrispondenze, mentre re.search() restituisce la prima corrispondenza.
- re.search() รจ piรน veloce di re.match().
- Entrambe le funzioni si comportano allo stesso modo.
Sintesi
Un'espressione regolare in a linguaggio di programmazione รจ una stringa di testo speciale utilizzata per descrivere un modello di ricerca. Include cifre, segni di punteggiatura e tutti i caratteri speciali come $#@!%, ecc. L'espressione puรฒ includere valori letterali
- Corrispondenza del testo
- Ripetizione
- ramificazione
- Composizione del modello ecc.
In Python, un'espressione regolare รจ indicata come RE (RE, espressioni regolari o pattern regex) sono incorporati attraverso Python re modulo.
- Modulo โreโ incluso con Python utilizzato principalmente per la ricerca e la manipolazione di stringhe
- Utilizzato frequentemente anche per lo โscrapingโ di pagine web (estrarre grandi quantitร di dati dai siti web)
- I metodi di espressione regolare includono re.match(),re.search()& re.findall()
- Altro Python I metodi di sostituzione RegEx sono sub() e subn() che vengono utilizzati per sostituire le stringhe corrispondenti in re
- Python Bandiere Molti Python I metodi Regex e le funzioni Regex accettano un argomento opzionale chiamato Flags
- Questi flag possono modificare il significato del modello Regex specificato
- Various Python i flag utilizzati nei metodi Regex sono re.M, re.I, re.S, ecc.







