Če ste programer, verjetno že veste, kaj so regularni izrazi (regularni izrazi). Vzorci regularnih izrazov so bili uporabljeni v skoraj vseh običajnih programskih jezikih, vendar večina razvijalcev moči in vsestranskosti teh vzorcev ne prepozna.
Ta priročnik govori o regularnih izrazih in o tem, kako jih lahko uporabljate v programskem jeziku Python.
Kaj so regularni izrazi?
Regularni izrazi so vzorci, ki uporabniku pomagajo pri ujemanju kombinacij znakov v besedilnih datotekah in nizih. Regularne izraze lahko uporabite za filtriranje ali iskanje določenega vzorca v izhodu ukaza ali dokumenta.
Obstajajo različni primeri uporabe regularnih izrazov, najbolj znani ukaz grep v Linuxu. Druge aplikacije vključujejo filtriranje informacij, na primer pridobivanje e-poštnih naslovov in telefonskih številk z odlagališča podatkov.
Glavni razlog, zakaj se mnogi razvijalci odmaknejo od regularnih izrazov, je pomanjkanje zavedanja o moči ujemanja vzorcev. Nekateri so celo regularne izraze zmedeni zaradi zajetne količine znakov in zaporedij, uporabljenih v vzorcih.
Ne glede na razlog, regularni izrazi so in bodo eden najpomembnejših vidikov programiranja, o katerem bi morali vedeti vsi.
Regularni izrazi: ujemanje znakov in zaporedij
Regex je povsem nov jezik sam po sebi. Regex motor razlaga vzorce, sestavljene iz več znakov, opremljenih s posebnimi pomeni. Osnovne dobesedne črke, na primer alfanumerični znaki, se ujemajo. Toda zapleteni znaki, kot so $, *, +, {itd. pomoč pri ujemanju višjega reda.
- Zvezdica (*): Ujema se s prejšnjim znakom nič ali večkrat. Dobesedni pomen znaka bi bil "Element pomnožen n krat". Na primer, če je regularni izraz abc *, ujemajoči se nizi bodo ab, abc, abcc, abccc, abcccc itd. Izraz [bc] * se bo ujemala z bc, bcbc, bcbc itd.
- Plus (+): Enkrat ali več se ujema s prejšnjim znakom. Delo + znak je podoben *, toda + znak izpusti vzorec, če se znak ne pojavi. Na primer abc + se bo ujemalo z abc, abcc, abccc itd. vendar ne ab.
- Vprašaj (?): Ujema se s prejšnjim znakom nič ali enkrat. Na primer vzorec abc? se bo ujemalo samo z ab in abc.
- Cev (|): Uporablja se kot binarna datoteka ALI operater. Ujema se s katerim koli znakom pred in naslednjo cevjo. Na primer a | b se bo ujemalo z a ali b.
- Pika (.): Ujema se z likom, katerega identiteta ni znana. Na primer a.c se bo ujemalo z aac, abc, acc, a2c itd.
- Korenje (^): Ujema se s prvim znakom v vzorcu. Na primer ^ Ra se bodo ujemale z besedami, ki se začnejo z Ra kot so Zajec, Rakun in Naključje.
- Dolar ($): Ujema se z zadnjim znakom v vzorcu. Na primer $ se bo ujemala z besedami, ki se končajo z an kot so Van, Dan in Plan.
- Vezaj (-): Uporablja se za določanje obsega znakov. Na primer [0-9] se bo ujemala z vsemi enomestnimi številskimi znaki.
Posebna zaporedja, ki se uporabljajo v vzorcih regularnih izrazov, so:
- \ A: Vrne ujemanje, če so naslednji znaki na začetku niza. Na primer \ Ate se bo ujemala z besedami, ki se začnejo z The kot so The, Them, Oni itd.
- \ b: Vrne ujemanje, če je znak na začetku ali na koncu besede. Na primer \ bmad in nori \ b se bodo ujemale z besedami, kot so narejeno in nomad oz.
- \ B: Vrne ujemanje, če znaka ni mogoče najti na začetku ali koncu besede.
- \ d: Ujema se s številskimi znaki v nizu. Na primer /d* se bodo ujemale s številkami, kot so 1, 12, 1232 itd.
- \ D: Ujema se s številskimi znaki v nizu. / D se bo ujemalo z a, b, c, f itd.
- \ s: Ujema se s presledkom v besedilu.
- \ S: Ujema se z znakom, ki ni presledek v besedilu.
- \ w: Vrne ujemanje, če niz vsebuje alfanumerične znake, vključno s podčrtaji. Na primer \ w se bo ujemalo z a, b, c, d, 1, 2, 3 itd.
- \ W: Vrne ujemanje, če niz ne vsebuje alfanumeričnih znakov ali podčrtajev.
- \ Z: Ujema se z znaki na koncu niza. Na primer konec \ Z se bo ujemala z besedami, ki se končajo z konec kot so upogibanje, popravljanje, nagnjenost itd.
Pythonove metode za regularne izraze
V Pythonu je ponovno knjižnica nudi vse potrebne funkcije in pripomočke, potrebne za izvajanje regularnega izraza v vaših programih. Ni vam treba prenesti knjižnice s pomočjo pipa, saj je vnaprej nameščen s tolmačem Python.
Za uvoz datoteke ponovno knjižnico v Pythonu, dodajte naslednjo kodo v svoj skript:
uvozi ponovno
Upoštevajte, da med posredovanjem regularnih izrazov v Pythonu uporabljamo surove nize, saj ne razlagajo posebnih znakov, kot je \ n in \ t drugače.
Ujemanje ()
The re.match () metoda v Pythonu vrne objekt regularnega izraza, če program najde ujemanje na začetku določenega niza. Ta funkcija ima dva osnovna argumenta:
re.match (vzorec, niz)
...kje vzorec je regularni izraz in vrvica je besedilo, ki ga je treba iskati.
Oglejte si spodnji delček kode.
uvozi ponovno
match = re.match (r'Word ', "Ta stavek vsebuje besedo")
tiskanje (ujemanje)
The r znak pred nizom pomeni surovi niz.
Izhod:
Nobenega
Zgoraj omenjena koda se vrne Nobenega Ker Beseda ni bil prisoten na začetku niza.
Če najdete ujemanje, lahko natisnete ujemanje s pomočjo skupina () metoda, ki pripada predmetu regularnega izraza.
uvozi ponovno
match = re.match (r'Word ', "Besede je težko prebrati")
natisni (match.group (0))
Izhod:
Beseda
Iskanje()
The ponovno iskanje () metoda jemlje podobne argumente kot re.match (). Čeprav match () vrne le zadetke, ki so prisotni na začetku niza, Iskanje() vrne ujemanja, najdena pri katerem koli indeksu v nizu.
uvozi ponovno
match = re.search (r'Word ', "Ta stavek vsebuje besedo. Besede je težko prebrati. ")
natisni (match.group (0))
Upoštevajte, da ujemanje () in Iskanje() metode vrnejo samo eno ujemanje vzorca. V zgoraj omenjeni kodi je Beseda se prikaže dvakrat. Toda Iskanje() funkcija se bo ujemala samo s prvo pojavitvijo besede.
Beseda
Najdi vse ()
Kot že lahko uganite, findall () vrne vsako možno ujemanje v nizu.
uvozi ponovno
match = re.search (r'Word ', "Ta stavek vsebuje besedo. Besede je težko prebrati. ")
za elem v tekmi:
tisk (elem)
Namesto da vrne objekt regularnega izraza, funkcija findall () vrne seznam vseh zadetkov. Seznam lahko pregledujete s pomočjo zanka for v pythonu.
Razdeli ()
Če želite niz razdeliti na podnize z vzorcem kot ločilo, potem razdeli () funkcija je tista, ki jo potrebujete.
uvozi ponovno
split = re.split (r'and ', "Ta beseda in to in to se razlikujejo.")
natisni (razdeli)
Izhod:
['Ta beseda "," tista "," to so drugačne. "]
Pod ()
The pod () metoda uporabniku omogoča, da namesto vzorca nadomesti določeno besedo. Zajema naslednje argumente.
re.sub (vzorec, zamenjava, niz)
Upoštevajte ta delček kode:
uvozi ponovno
result = re.sub (r'and ',' ali ', "Dave in Harry morata biti kaznovana.")
natisni (rezultat)
Izhod:
Dave ali Harry morata biti kaznovana.
Sestavi ()
The re.compile () metoda v ponovno knjižnica uporabniku omogoča shranjevanje prevedene različice vzorca regularnega izraza v pomnilnik. Nato lahko uporabnik s pomočjo prevedenega predmeta hitro filtrira določeni izpis besedila za ujemajoče se vzorce.
uvozi ponovno
pattern = re.compile ('Python')
match = pattern.findall ("Python je odličen jezik za pisanje skriptov. Pythona je enostavno naučiti. ")
tiskanje (ujemanje)
Ta funkcija se uporablja predvsem za shranjevanje vzorcev, ki zahtevajo veliko virov in potrebujejo veliko časa za zagon. To težavo reši predhodno sestavljanje in shranjevanje vzorca kot predmeta.
Izkoristite moč regularnega izraza s Pythonom
Ko delate z besedilnimi datotekami in izhodnimi podatki, je regularni izraz odlično orodje, ki ga imate na voljo. Hitro lahko napišete nekaj kode za filtriranje ali nadomeščanje določenih vzorcev v dokumentu.
Zapomnitev vseh znakov in ujemanje zaporedij je lahko težko, če šele začnete z regularnim izrazom. Če želite izboljšati regularne izraze, vam bo vsake toliko časa zagotovo pomagalo sklicevanje na seznam znakov, metod in zaporedij.
Uporabite ta seznam regularnih izrazov Python, da boste lahko bolje uporabljali ta vsestranski programski jezik.
Preberite Naprej
- Programiranje
- Programiranje
- Python
Deepesh je mlajši urednik za Linux pri MUO. Na internetu že več kot 3 leta piše informativne vsebine. V prostem času uživa v pisanju, poslušanju glasbe in igranju kitare.
Naročite se na naše novice
Pridružite se našemu glasilu za tehnične nasvete, preglede, brezplačne e-knjige in ekskluzivne ponudbe!
Še en korak…!
Potrdite svoj e-poštni naslov v e-poštnem sporočilu, ki smo vam ga pravkar poslali.