Python RegEx
O expresie regulată, pe scurt RegEx, este o serie de caractere care descrie un model de căutare.
Cu ea poți testa dacă un șir conține acel model.
Modulul RegEx
În Python, expresiile regulate sunt gestionate de re, un pachet încorporat.
Începe prin a-l importa:
Exemplu
import re
RegEx în Python
După ce ai importat re, expresiile regulate sunt gata de folosit:
Exemplu
re și caută într-un șir pentru a vedea dacă începe cu „The” și se termină cu „Spain”.
Folosește re.search() cu modelul "^The.*Spain$".
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
Funcții RegEx
Ca să cauți potriviri într-un șir, modulul re îți pune la dispoziție aceste funcții:
findall- Returnează o listă cu toate potrivirilesearch- Returnează un obiect Match când există o potrivire oriunde în șirsplit- Taie șirul la fiecare potrivire și returnează o listă cu bucățilesub- Înlocuiește una sau mai multe potriviri cu un șir ales de tine
Metacaractere
Un metacaracter este un caracter cu o semnificație specială:
[]- Definește un set de caractere\- Începe o secvență specială sau escapează un caracter special.- Se potrivește cu orice caracter, în afară de linie nouă^- Se potrivește la început$- Se potrivește la sfârșit*- Zero sau mai multe repetări+- Una sau mai multe repetări?- Zero sau o repetare{}- Exact numărul de repetări pe care îl specifici|- O variantă sau cealaltă()- Capturează și grupează
Indicatori (flags)
Indicatorii adăugați la un model schimbă felul în care se comportă o expresie regulată.
re.ASCII(re.A) - Se potrivește doar cu caractere ASCIIre.DEBUG- Afișează informații de depanarere.DOTALL(re.S) - Face caracterul . să se potrivească cu orice, inclusiv cu liniile noire.IGNORECASE(re.I) - Ignoră literele mari și mici la potrivirere.MULTILINE(re.M) - Se potrivește la începutul și la sfârșitul fiecărei liniire.NOFLAG- Arată că acest model nu are niciun indicator setatre.UNICODE(re.U) - Dă potriviri Unicodere.VERBOSE(re.X) - Permite spații albe și comentarii în interiorul unui model
Secvențe speciale
Dacă pui un \ în fața anumitor caractere, obții o secvență specială, care are propria semnificație specială. Acestea sunt cele disponibile:
\A- Găsește o potrivire doar când caracterele date deschid șirul\b- Găsește o potrivire când caracterele date încep sau încheie un cuvânt\B- Găsește o potrivire când caracterele date apar, dar NU la începutul sau la sfârșitul unui cuvânt\d- Găsește o potrivire pentru orice cifră (0-9) din șir\D- Găsește o potrivire pentru orice din șir care NU este cifră\s- Găsește o potrivire pentru orice caracter spațiu alb din șir\S- Găsește o potrivire pentru orice din șir care NU este spațiu alb\w- Găsește o potrivire pentru orice caracter de cuvânt din șir\W- Găsește o potrivire pentru orice din șir care NU este caracter de cuvânt\Z- Găsește o potrivire doar când caracterele date închid șirul
Seturi
Un set este un grup de caractere între paranteze pătrate [] și are și el o semnificație specială:
[arn]- Se potrivește cu unul dintre caracterele enumerate: a, r sau n[a-n]- Se potrivește cu orice literă mică aflată în alfabet între a și n[^arn]- Se potrivește cu orice caracter, în afară de a, r și n[0123]- Se potrivește cu una dintre cifrele enumerate: 0, 1, 2 sau 3[0-9]- Se potrivește cu orice cifră de la 0 până la 9[0-5][0-9]- Se potrivește cu orice număr de două cifre de la 00 până la 59[a-zA-Z]- Se potrivește cu orice literă de la a la z, mică SAU mare[+]- Într-un set, caracterele +, *, ., |, (), $ și {} își pierd semnificația specială, așa că [+] caută pur și simplu un + literal în șir
Funcția findall()
Funcția findall() adună toate potrivirile într-o listă, care le păstrează în ordinea în care au fost găsite.
Când nu există nicio potrivire, primești o listă goală:
Exemplu
re.findall() pentru a găsi toate aparițiile lui „ai” în „The rain in Spain”.
Afișează lista de potriviri.
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.findall("ai", txt)
print(x)
Exemplu
re.findall() pentru a căuta „Portugal” în „The rain in Spain”.
Afișează rezultatul (listă goală când nu există nicio potrivire).
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.findall("Portugal", txt)
print(x)
Funcția search()
Funcția search() parcurge șirul și, când găsește o potrivire, îți dă un obiect Match.
Nu contează dacă în șir există mai multe potriviri, pentru că primești doar prima:
Când nu există nicio potrivire, primești valoarea None:
Exemplu
re.search() pentru a găsi primul caracter spațiu alb în „The rain in Spain”.
Afișează poziția lui folosind .start().
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.search("\s", txt)
print("Primul caracter spațiu alb se află pe poziția:", x.start())
Exemplu
re.search() pentru a căuta „Portugal” în „The rain in Spain”.
Afișează rezultatul (None când nu există nicio potrivire).
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.search("Portugal", txt)
print(x)
Funcția split()
Funcția split() împarte șirul la fiecare potrivire și returnează bucățile într-o listă:
Parametrul maxsplit limitează numărul de împărțiri efectuate:
Exemplu
re.split() pentru a împărți „The rain in Spain” la fiecare caracter spațiu alb.
Afișează lista rezultată.
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)
Exemplu
re.split() pentru a împărți „The rain in Spain” doar la prima apariție (maxsplit=1).
Afișează rezultatul.
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.split("\s", txt, 1)
print(x)
Funcția sub()
Funcția sub() pune textul ales de tine în locul fiecărei potriviri:
Parametrul count limitează numărul de înlocuiri efectuate:
Exemplu
re.sub() pentru a înlocui fiecare spațiu alb cu „9” în „The rain in Spain”.
Afișează rezultatul.
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)
Exemplu
re.sub() pentru a înlocui primele 2 caractere spațiu alb cu „9” în „The rain in Spain”.
Afișează rezultatul.
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt, 2)
print(x)
Obiectul Match
Un obiect Match păstrează detalii despre o căutare și despre ce a găsit aceasta.
Notă: Când nu există nicio potrivire, primești valoarea None și niciun obiect Match.
Ca să ajungi la aceste detalii, folosește proprietățile și metodele obiectului:
.span()dă un tuplu cu locul unde începe potrivirea și locul unde se termină.stringreturnează șirul pe care l-ai transmis funcției.group()returnează textul care s-a potrivit
Exemplu
re.search() pentru a căuta „ai” în „The rain in Spain”.
Afișează obiectul Match returnat.
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.search("ai", txt)
print(x)
Exemplu
r"\bS\w+" în „The rain in Spain”.
Afișează intervalul potrivirii folosind .span().
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())
Exemplu
r"\bS\w+" în „The rain in Spain”.
Afișează șirul original folosind .string.
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)
Exemplu
r"\bS\w+" în „The rain in Spain”.
Afișează textul potrivit folosind .group().
Ieșire: program Python complet
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())