Ako ste programer, velika je vjerojatnost da već znate što su regularni izrazi (regularni izrazi). Regex obrasci implementirani su u gotovo svaki uobičajeni programski jezik, no većina programera neprepoznaje snagu i svestranost tih uzoraka.
Ovaj se vodič bavi regularnim izrazima i kako ih možete koristiti u programskom jeziku Python.
Što su regularni izrazi?
Regularni izrazi su obrasci koji pomažu korisniku da kombinira kombinacije znakova u tekstualnim datotekama i nizovima. Regularne izraze možete koristiti za filtriranje ili pronalaženje određenog uzorka u izlazu naredbe ili dokumenta.
Postoje razni slučajevi upotrebe regularnih izraza, od kojih je najpoznatiji naredba grep u Linuxu. Ostale aplikacije uključuju filtriranje podataka, poput izdvajanja adresa e-pošte i telefonskih brojeva s odlagališta podataka.
Glavni razlog zašto se mnogi programeri udaljavaju od regularnih izraza je nedostatak svijesti o snazi podudaranja uzoraka. Neki čak i regularne izraze zbunjuju zbog velike količine znakova i sekvenci korištenih u uzorcima.
Koji god razlog bio, regularni izrazi jesu i bit će jedan od najvažnijih aspekata programiranja o kojem bi svi trebali znati.
Regularni izrazi: podudaranje likova i sekvenci
Regex je potpuno novi jezik sam za sebe. Regex engine tumači obrasce koji se sastoje od nekoliko znakova opremljenih određenim značenjima. Osnovni se literali, poput alfanumeričkih znakova, podudaraju sami sa sobom. Ali složeni znakovi poput $, *, +, {, itd. pomoć u usklađivanju višeg reda.
- Zvjezdica (*): Podudara se s prethodnim znakom nula ili više puta. Doslovno značenje znaka bilo bi "Element pomnožen n puta". Na primjer, ako je regularni izraz abc *, podudarni nizovi bit će ab, abc, abcc, abccc, abcccc itd. Izraz [prije Krista]* odgovarat će bc, bcbc, bcbc itd.
- Plus (+): Podudara se s prethodnim znakom jedan ili više puta. Rad tvrtke + lik je sličan *, ali + znak izostavlja obrazac ako se znak ne pojavi. Na primjer, abc + podudarat će se s abc, abcc, abccc itd. ali ne ab.
- Upitnik (?): Podudara se s prethodnim znakom nula ili jedanput. Na primjer, obrazac abc? odgovarat će samo ab i abc.
- Cijev (|): Koristi se kao binarni ILI operater. Podudara se s bilo kojim od znakova koji prethode i slijede cijev. Na primjer, a | b odgovarat će ili a ili b.
- Točka (.): Podudara se s likom čiji je identitet nepoznat. Na primjer, a.c podudarat će se s aac, abc, acc, a2c itd.
- Mrkva (^): Podudara se s prvim znakom u uzorku. Na primjer, ^ Ra podudarat će se s riječima koje počinju s Ra kao što su Zec, Rakun i Random.
- Dolar ($): Podudara se s posljednjim znakom u uzorku. Na primjer, $ podudarat će se s riječima koje završavaju s an kao što su Van, Dan i Plan.
- Crtica (-): Koristi se za definiranje raspona znakova. Na primjer, [0-9] podudarat će se sa svim jednoznamenkastim numeričkim znakovima.
Posebne sekvence koje se koriste u uzorcima regularnih izraza su:
- \ A: Vraća podudaranje ako su sljedeći znakovi prisutni na početku niza. Na primjer, \ AOn podudarat će se s riječima koje počinju s The kao što su The, Them, Oni itd.
- \ b: Vraća podudaranje ako je znak pronađen na početku ili na kraju riječi. Na primjer, \ bmad i lud \ b podudarat će se s riječima kao što su napravio i nomad odnosno.
- \ B: Vraća podudaranje ako znak nije pronađen na početku ili na kraju riječi.
- \ d: Podudara se s numeričkim znakovima koji su prisutni u nizu. Na primjer, /d* odgovarat će brojevima kao što su 1, 12, 1232 itd.
- \ D: Podudara se s numeričkim znakovima u nizu. / D odgovarat će a, b, c, f itd.
- \ s: Podudara se s razmakom u tekstu.
- \ S: Podudara se sa znakom koji nije razmak u tekstu.
- \ w: Vraća podudaranje ako niz sadrži alfanumeričke znakove, uključujući donje crte. Na primjer, \ w odgovarat će a, b, c, d, 1, 2, 3 itd.
- \ W: Vraća podudaranje ako niz ne sadrži alfanumeričke znakove ili donje crte.
- \ Z: Podudara se sa znakovima na kraju niza. Na primjer, kraj \ Z podudarat će se s riječima koje završavaju s kraj poput savijanja, popravljanja, naginjanja itd.
Python metode za regularne izraze
U Pythonu, ponovno knjižnica pruža sve potrebne funkcije i uslužne programe potrebne za implementaciju regularnog izraza u vaše programe. Ne morate preuzeti knjižnicu pomoću pipa jer je unaprijed instaliran s Python interpretatorom.
Za uvoz datoteke ponovno knjižnici u Pythonu, dodajte sljedeći kod u svoju skriptu:
uvoz re
Imajte na umu da dok prolazimo regularne izraze u Pythonu, koristimo sirove nizove jer oni ne tumače posebne znakove kao što je \ n i \ t različito.
Podudaranje ()
The re.match () metoda u Pythonu vraća regex objekt ako program pronađe podudaranje na početku navedenog niza. Ova funkcija uzima dva osnovna argumenta:
re.match (uzorak, niz)
...gdje uzorak je regularni izraz i niz je tekst koji treba pretražiti.
Pogledajte isječak koda u nastavku.
uvoz re
match = re.match (r'Word ', "Ova rečenica sadrži riječ")
ispis (podudaranje)
The r znak prije niza predstavlja sirovi niz.
Izlaz:
Nijedna
Spomenuti kôd se vraća Nijedna jer Riječ nije bio prisutan na početku niza.
Ako je pronađeno podudaranje, možete ispisati podudaranje pomoću skupina() metoda koja pripada regex objektu.
uvoz re
match = re.match (r'Word ', "Riječ je teško pročitati")
ispis (match.group (0))
Izlaz:
Riječ
Traži()
The istraživanje() metoda uzima slične argumente kao re.match (). Dok match () vraća samo podudarnosti prisutna na početku niza, traži() vratit će podudaranja pronađena u bilo kojem indeksu u nizu.
uvoz re
match = re.search (r'Word ', "Ova rečenica sadrži riječ. Riječ je teško pročitati. ")
ispis (match.group (0))
Imajte na umu da podudaranje () i traži() metode će vratiti samo jedno podudaranje uzorka. U gore spomenutom kodu, Riječ pojavljuje se dva puta. Ali traži() funkcija odgovara samo prvom pojavljivanju riječi.
Riječ
Pronađi sve ()
Kao što već možete pretpostaviti, findall () metoda vraća svako moguće podudaranje u nizu.
uvoz re
match = re.search (r'Word ', "Ova rečenica sadrži riječ. Riječ je teško pročitati. ")
za elem u utakmici:
ispis (elem)
Umjesto da vrati objekt regularnog izraza, funkcija findall () vraća popis svih podudaranja. Popis možete pregledavati pomoću a za petlju u pythonu.
Podjela()
Ako želite podijeliti niz u podnizove koristeći obrazac kao graničnik, tada podjela() funkcija je ona koja vam treba.
uvoz re
split = re.split (r'and ', "Ova riječ i to i ovo su različiti.")
ispis (split)
Izlaz:
['Ova riječ "," ona "," ovo su različite. "]
Pod()
The pod() metoda omogućuje korisniku zamjenu određene riječi na mjestu uzorka. Potrebni su sljedeći argumenti.
re.sub (uzorak, zamjena, niz)
Razmotrite ovaj isječak koda:
uvoz re
result = re.sub (r'and ',' ili ', "Dave i Harry moraju biti kažnjeni.")
ispis (rezultat)
Izlaz:
Dave ili Harry moraju biti kažnjeni.
Sastaviti()
The re.compile () metoda u ponovno knjižnica omogućuje korisniku pohranu kompajlirane verzije uzorka regularnog izraza u memoriju. Zatim, pomoću kompiliranog objekta, korisnik može brzo filtrirati navedeno odlagalište teksta za podudarne uzorke.
uvoz re
pattern = re.compile ('Python')
match = pattern.findall ("Python je izvrstan jezik za pisanje skripti. Python je lako naučiti. ")
ispis (podudaranje)
Ova se funkcija prvenstveno koristi za spremanje uzoraka koji troše resurse i kojima treba puno vremena za pokretanje. Prethodno sastavljanje i spremanje uzorka kao objekta rješava ovaj problem.
Iskoristite snagu Regexa s Pythonom
Kada radite s tekstualnim datotekama i izlazima, regularni izraz je izvrstan alat koji vam stoji na raspolaganju. Možete brzo napisati neki kôd za filtriranje ili zamjenu određenih uzoraka u dokumentu.
Memoriranje svih znakova i podudaranje sekvenci može biti teško ako tek započinjete s regularnim izrazom. Da biste bili bolji u regularnim izrazima, pozivanje na popis znakova, metoda i sekvenci svako malo zasigurno će vam dugoročno pomoći.
Koristite ovaj popis Python regularnih izraza kako biste mogli biti bolji u korištenju ovog svestranog programskog jezika.
Pročitajte Dalje
- Programiranje
- Programiranje
- Piton

Deepesh je mlađi urednik za Linux u MUO. Na internetu piše informativni sadržaj više od 3 godine. U slobodno vrijeme uživa u pisanju, slušanju glazbe i sviranju gitare.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Još jedan korak…!
Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.