Vodnik za začetnike po regularnih izrazih s Pythonom

Vodnik za začetnike po regularnih izrazih s Pythonom

Če ste programer, verjetno že veste, kaj so regularni izrazi (regex). Vzorci regex so bili implementirani v skoraj vseh običajnih programskih jezikih, vendar večina razvijalcev ne prepozna moči in vsestranskosti teh vzorcev.





Ta priročnik govori o regularnih izrazih in o tem, kako jih lahko uporabite v programskem jeziku Python.





Kaj so redni izrazi?

Regularni izrazi so vzorci, ki uporabniku pomagajo ujemati kombinacije znakov v besedilnih datotekah in nizih. Za filtriranje ali iskanje določenega vzorca v izpisu ukaza ali dokumenta lahko uporabite regularne izraze.





Obstajajo različni primeri uporabe regularnih izrazov, od katerih je najbolj znan ukaz grep v Linuxu . Druge aplikacije vključujejo filtriranje informacij, na primer izvlečenje e -poštnih naslovov in telefonskih številk iz odlagališča podatkov.

Glavni razlog, zakaj se mnogi razvijalci oddaljujejo od regularnih izrazov, je pomanjkanje zavedanja o moči ujemanja vzorcev. Nekaterim se celo zdijo regularni izrazi zmedeni zaradi velike količine znakov in zaporedij, ki se uporabljajo v vzorcih.



Ne glede na razlog, so redni izrazi in bodo eden najpomembnejših vidikov programiranja, o katerem bi morali vedeti vsi.

kako dodati bližnjice na iphone

Regularni izrazi: ujemanje znakov in zaporedij

Regex je sam po sebi popolnoma nov jezik. Regex motor razlaga vzorce, sestavljene iz več znakov, opremljenih s posebnimi pomeni. Osnovne črke, kot so alfanumerični znaki, se ujemajo. Toda zapleteni znaki, kot so $, *, +, {itd., Pomagajo pri ujemanju višjega reda.





  1. 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 nizovi bodo ab, abc, abcc, abccc, abcccc itd [bc]* se bo ujemal z bc, bcbc, bcbc itd.
  2. Več (+): Enkrat ali večkrat se ujema s prejšnjim znakom. Delovanje + lik je podoben * , toda + znak izpusti vzorec, če se znak ne pojavi. Na primer, abc + se bo ujemal z abc, abcc, abccc itd., ne pa ab.
  3. Vprašaj (?): Ujema se s prejšnjim znakom nič ali enkrat. Na primer vzorec abc? se bo ujemal samo z ab in abc.
  4. Cev (|): Uporablja se kot binarni ALI operater. Ujema se z enim od znakov pred in naslednjo črto. Na primer, a | b se bo ujemal z a ali b.
  5. Pika (.): Ujema se z likom, katerega identiteta ni znana. Na primer, a.c se bo ujemal z aac, abc, acc, a2c itd.
  6. Korenje (^): Ujema prvi znak v vzorcu. Na primer, ^Ra se bo ujemal z besedami, ki se začnejo na Zunaj kot so zajec, rakun in naključno.
  7. Dolar ($): Ujema zadnji znak v vzorcu. Na primer, $ se bo ujemal z besedami, ki se končajo z an kot so Van, Dan in Plan.
  8. Vezaj (-): Uporablja se za določanje vrste znakov. Na primer, [0-9] se bo ujemal z vsemi enomestnimi številskimi znaki.

Posebne sekvence, ki se uporabljajo v vzorcih regularnega izraza, so:

  1. TO: Vrne ujemanje, če so naslednji znaki prisotni na začetku niza. Na primer, ATOn se bo ujemal z besedami, ki se začnejo z The kot so The, Them, Oni itd.
  2. b: Vrne ujemanje, če je znak na začetku ali na koncu besede. Na primer, bmad in nor b se bo ujemal z besedami, kot so narejeno in nomad oz.
  3. B: Vrne ujemanje, če znaka ne najdete na začetku ali koncu besede.
  4. d: Ujema številčne znake v nizu. Na primer, /d* se bo ujemal s številkami, kot so 1, 12, 1232 itd.
  5. D: Ujema neštevilčne znake v nizu. /D se bo ujemal z a, b, c, f itd.
  6. s: Ujema s presledkom v besedilu.
  7. S: Ujema znak, ki ni prazen v besedilu.
  8. in: Vrne ujemanje, če niz vsebuje alfanumerične znake, vključno s podčrtaji. Na primer, in se bodo ujemali z a, b, c, d, 1, 2, 3 itd.
  9. IN: Vrne ujemanje, če niz ne vsebuje alfanumeričnih znakov ali podčrtajev.
  10. WITH: Ujema znake na koncu niza. Na primer, konec Z se bo ujemal z besedami, ki se končajo z konec kot so upogibanje, popravljanje, nagibanje itd.

Metode Python za regularne izraze

V Pythonu je re knjižnica ponuja vse potrebne funkcije in pripomočke, potrebne za implementacijo regularnega izraza v vaše programe. Knjižnice vam ni treba prenesti s pipom, saj je vnaprej nameščen s tolmačem Python.





Če želite uvoziti re knjižnici v Pythonu, v skript dodajte naslednjo kodo:

import re

Upoštevajte, da pri posredovanju regularnih izrazov v Pythonu uporabljamo surove nize, saj ne razlagajo posebnih znakov, kot so n in t drugače.

Ujemanje ()

The re.match () metoda v Pythonu vrne regex objekt, če program najde ujemanje na začetku podanega niza. Ta funkcija ima dva osnovna argumenta:

re.match(pattern, string)

...kje vzorec je regularni izraz in vrvica je besedilo, ki ga je treba iskati.

Oglejte si spodnji delček kode.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

The r znak pred nizom pomeni surovi niz.

Izhod:

None

Zgoraj omenjena koda se vrne Nobena Ker Beseda ni bil prisoten na začetku niza.

Če se najde ujemanje, ga lahko natisnete z skupina () metoda, ki pripada objektu regex.

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

Izhod:

Word

The re.search () metoda vzame podobne argumente kot re.match (). Medtem ko match () vrne samo ujemanja, prisotna na začetku niza, Iskanje() vrne ujemanja, najdena pri katerem koli indeksu v nizu.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

Upoštevajte, da je match () in Iskanje() metode vrnejo le eno ujemanje vzorcev. V zgoraj omenjeni kodi je Beseda se pojavi dvakrat. Toda Iskanje() funkcija se bo ujemala samo s prvim vnosom besede.

Word

FindAll ()

Kot lahko že ugibate, je findall () method vrne vsako možno ujemanje v nizu.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

Namesto da vrne predmet regex, funkcija findall () vrne seznam vseh ujemanj. Po seznamu se lahko premikate z for zanka v pythonu .

Razdeli ()

Če želite niz razdeliti na podniz z vzorcem kot ločevalnikom, potem split () funkcija je tista, ki jo potrebujete.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Izhod:

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

Sub ()

The sub () metoda omogoča uporabniku, da namesto vzorca nadomesti določeno besedo. Upošteva naslednje argumente.

re.sub(pattern, replacement, string)

Razmislite o tem delčku kode:

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

Izhod:

Dave or Harry must be punished.

Prevedi ()

The re.compile () metodo v re knjižnica omogoča uporabniku, da shrani prevedeno različico vzorca regularnega izraza v pomnilnik. Nato lahko uporabnik s pomočjo prevedenega predmeta hitro filtrira podani izpis besedila za ujemajoče se vzorce.

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

Ta funkcija se uporablja predvsem za shranjevanje vzorcev, ki zahtevajo veliko virov in potrebujejo veliko časa za izvajanje. Predhodno sestavljanje in shranjevanje vzorca kot predmeta reši to težavo.

Izkoristite moč regularnega izraza s Pythonom

Ko delate z besedilnimi datotekami in izpisom, je regex odlično orodje, ki ga imate na voljo. Kodo lahko hitro napišete za filtriranje ali zamenjavo določenih vzorcev v dokumentu.

Zapomniti si vse znake in ujemajoče se sekvence je lahko težko, če šele začenjate z regularnim izrazom. Če si želite izboljšati regularne izraze, vam bo dolgoročno zagotovo pomagal sklic na seznam znakov, metod in zaporedij.

Deliti Deliti Cvrkutati E-naslov Python RegEx Cheat Sheet za nadobudne programerje

Uporabite ta seznam regularnih izrazov Python, da boste lahko bolje uporabljali ta vsestranski programski jezik.

Preberite Naprej
Sorodne teme
  • Programiranje
  • Programiranje
  • Python
O avtorju Deepesh Sharma(79 objavljenih člankov)

Deepesh je mlajši urednik za Linux pri MUO. Piše informacijske vodnike o Linuxu, katerih namen je vsem novincem ponuditi blaženo izkušnjo. Glede filmov nisem prepričan, če pa želite govoriti o tehnologiji, je vaš fant. V prostem času ga lahko berete, poslušate različne glasbene zvrsti ali igrate na kitaro.

Več od Deepesh Sharma

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti