Jei esate programuotojas, yra tikimybė, kad jau žinote, kas yra reguliarūs posakiai (regex). „Regex“ modeliai buvo įdiegti beveik visose pagrindinėse programavimo kalbose, tačiau dauguma kūrėjų nepripažįsta šių modelių galios ir universalumo.

Šis vadovas yra apie reguliarius posakius ir kaip juos naudoti Python programavimo kalboje.

Kas yra reguliarūs posakiai?

Reguliarūs posakiai yra modeliai, padedantys vartotojui suderinti simbolių derinius teksto failuose ir eilutėse. Norėdami filtruoti ar rasti konkretų šabloną komandos ar dokumento išvestyje, galite naudoti įprastus posakius.

Yra įvairių įprastų posakių naudojimo atvejų, labiausiai žinomų grep komanda Linux. Kitos programos apima informacijos filtravimą, pvz., El. Pašto adresų ir telefono numerių išskyrimą iš duomenų saugyklos.

Pagrindinė priežastis, kodėl daugelis kūrėjų nutolsta nuo įprastų išraiškų, yra nepakankamas žinojimas apie modelių derinimo galią. Kai kuriems netgi atrodo, kad reguliarūs posakiai yra painūs, nes raštuose naudojamas didelis simbolių ir sekų kiekis.

instagram viewer

Kad ir kokia būtų priežastis, reguliarūs posakiai yra ir bus vienas iš svarbiausių programavimo aspektų, apie kurį turėtų žinoti visi.

Reguliarūs posakiai: simbolių ir sekų derinimas

„Regex“ savaime yra visiškai nauja kalba. „Regex“ variklis interpretuoja modelius, susidedančius iš kelių simbolių, turinčių specifines reikšmes. Pagrindiniai pažodiniai, tokie kaip raidiniai ir skaitiniai simboliai, sutampa. Bet sudėtingi simboliai, tokie kaip $, *, +, {ir kt. pagalba aukštesnės eilės derinimu.

  1. Žvaigždutė (*): Atitinka ankstesnį simbolį nulį ar daugiau kartų. Tiesioginė veikėjo reikšmė būtų „Elementas padaugintas n kartų“. Pavyzdžiui, jei reguliarioji išraiška yra abc *, suderintos eilutės bus ab, abc, abcc, abccc, abcccc ir kt. Išsireiškimas [BC] * atitiks bc, bcbc, bcbc ir kt.
  2. Pliusas (+): Vieną ar kelis kartus atitinka ankstesnį simbolį. Darbas + personažas yra panašus į *, bet + simbolis praleidžia modelį, jei simbolis nepasireiškia. Pavyzdžiui, abc + atitiks abc, abcc, abccc ir kt. bet ne ab.
  3. Klaustukas (?): Atitinka ankstesnį simbolį nulis arba vieną kartą. Pavyzdžiui, modelis abc? atitiks tik ab ir abc.
  4. Vamzdis (|): Naudojamas kaip dvejetainis ARBA operatorius. Atitinka bet kurį iš simbolių, einančių prieš ir po jų. Pavyzdžiui, a | b atitiks arba a, arba b.
  5. Taškas (.): Atitinka simbolį, kurio tapatybė nežinoma. Pavyzdžiui, a.c. atitiks aac, abc, acc, a2c ir pan.
  6. Morkos (^): Atitinka pirmąjį modelio simbolį. Pavyzdžiui, ^ Ra atitiks žodžius pradedant Ra tokių kaip Triušis, Meškėnas ir Atsitiktinis.
  7. Doleris ($): Atitinka paskutinį modelio simbolį. Pavyzdžiui, $ atitiks žodžius, kurie baigsis an tokių kaip Vanas, Danas ir Planas.
  8. Brūkšnelis (-): Naudojamas simbolių diapazonui apibrėžti. Pavyzdžiui, [0-9] sutaps su visais vienženkliais skaitiniais simboliais.

Specialios sekos, naudojamos įprastos išraiškos modeliuose:

  1. \ A: Pateikia atitikmenį, jei eilutės pradžioje yra sekančių simbolių. Pavyzdžiui, \ AThe atitiks žodžius, prasidedančius raide The tokie kaip „The Them“, „Jie“ ir kt.
  2. \ b: Grąžina atitikmenį, jei simbolis randamas žodžio pradžioje arba pabaigoje. Pavyzdžiui, \ bmad ir pašėlęs \ b atitiks tokius žodžius kaip pagamintas ir klajoklis atitinkamai.
  3. \ B: Pateikia atitikmenį, jei simbolis nerandamas žodžio pradžioje ar pabaigoje.
  4. \ d: Atitinka eilutėje esančius skaitinius simbolius. Pavyzdžiui, /d* atitiks tokius skaičius kaip 1, 12, 1232 ir kt.
  5. \ D: Atitinka ne skaitinius eilutės simbolius. / D atitiks a, b, c, f ir kt.
  6. \ s: Atitinka teksto tarpo simbolį.
  7. \ S: Atitinka ne tarpo simbolį tekste.
  8. \ w: Pateikia atitikmenį, jei eilutėje yra raidiniai ir skaitiniai simboliai, įskaitant pabraukimus. Pavyzdžiui, \ w atitiks a, b, c, d, 1, 2, 3 ir kt.
  9. \ W: Pateikia atitikmenį, jei eilutėje nėra raidinių ir skaitinių simbolių ar pabraukimų.
  10. \ Z: Atitinka simbolius eilutės pabaigoje. Pavyzdžiui, pabaiga \ Z atitiks žodžius, kurie baigsis galas tokie kaip lenkimas, taisymas, tendencija ir kt.

„Python“ metodai reguliarioms išraiškoms

„Python“ programoje re biblioteka teikia visas reikiamas funkcijas ir komunalines paslaugas, reikalingas norint įdiegti regex jūsų programose. Jums nereikia atsisiųsti bibliotekos naudojant „pip“, nes ji iš anksto įdiegta kartu su „Python“ vertėju.

Norėdami importuoti re biblioteką „Python“, pridėkite šį kodą prie savo scenarijaus:

importo re

Atkreipkite dėmesį, kad perduodant reguliarias išraiškas „Python“, mes naudojame neapdorotas eilutes, nes jos neinterpretuoja specialių simbolių, tokių kaip \ n ir \ t kitaip.

Rungtynės ()

The pakartoti () metodas „Python“ pateikia regex objektą, jei programa nurodo eilutę nurodytos eilutės pradžioje. Ši funkcija apima du pagrindinius argumentus:

pakartotinis atitikimas (modelis, eilutė)

... kur raštas yra reguliarioji išraiška ir stygos yra tekstas, kurio reikia ieškoti.

Pažvelkite į toliau pateiktą kodo fragmentą.

importo re
match = re.match (r'Word ', "Šiame sakinyje yra žodis")
spausdinti (atitikti)

The r simbolis prieš eilutę reiškia neapdorotą eilutę.

Išvestis:

Nė vienas

Minėtas kodas grąžinamas Nė vienas nes Žodis eilutės pradžioje nebuvo.

Jei randate atitikmenį, galite ją atsispausdinti naudodami grupė () metodas, priklausantis regex objektui.

importo re
match = re.match (r'Word ', "Žodį sunku perskaityti")
spausdinti (match.group (0))

Išvestis:

Žodis

Paieška()

The re.search () metodas apima panašius argumentus kaip „re.match“ (). Nors „match“) pateikia tik eilutės pradžioje esančias rungtynes, Paieška() grąžins bet kurioje eilutės rodyklėje rastas rungtynes.

importo re
match = re.search (r'Word ', "Šiame sakinyje yra žodis. Žodį sunku perskaityti. ")
spausdinti (match.group (0))

Atkreipkite dėmesį, kad rungtynės () ir Paieška() metodai grąžins tik vieną modelio atitiktį. Minėtame kode Žodis pasirodo du kartus. Bet Paieška() funkcija atitiks tik pirmą žodžio atvejį.

Žodis

„FindAll“ ()

Kaip jau galite atspėti, rasti () metodas grąžina kiekvieną įmanomą eilutės atitikimą.

importo re
match = re.search (r'Word ', "Šiame sakinyje yra žodis. Žodį sunku perskaityti. ")
už rungtynių elementą:
spausdinti (elem)

Užuot grąžinusi regex objektą, funkcija findall () pateikia visų atitikmenų sąrašą. Galite kartoti sąrašą naudodami a už kilpą pitone.

Padalinti ()

Jei norite padalyti eilutę į eilutes, naudodami šabloną kaip skiriklį, tada padalyti () funkcija yra ta, kurios jums reikia.

importo re
split = re.split (r'and ', "Šis ir tas žodis, ir tai skiriasi.")
spausdinti (padalinti)

Išvestis:

['Šis žodis "," tai "," tai yra skirtingi "]

Pogrupis ()

The sub () metodas leidžia vartotojui pakeisti konkretų žodį šablono vietoje. Tam reikia šių argumentų.

re.sub (modelis, pakeitimas, eilutė)

Apsvarstykite šį kodo fragmentą:

importo re
rezultatas = re.sub (r'and ',' arba ', "Dave'as ir Harry turi būti nubausti.")
spausdinti (rezultatas)

Išvestis:

Deivas ar Haris turi būti nubausti.

Sudaryti ()

The re.compile () metodas re biblioteka leidžia vartotojui saugoti atmintyje sukompiliuotą reguliaraus reiškinio modelio versiją. Tada, naudodamas sukompiliuotą objektą, vartotojas gali greitai filtruoti nurodytą teksto sąvartyną, kad jis atitiktų modelius.

importo re
modelis = re.compile ('Python')
match = pattern.findall ("" Python "yra puiki kalba scenarijams rašyti. „Python“ lengva išmokti. ")
spausdinti (atitikti)

Ši funkcija pirmiausia naudojama taupant modelius, kurie reikalauja daug išteklių ir kuriems paleisti reikia daug laiko. Sudėjus ir išsaugojus šabloną kaip objektą iš anksto, ši problema išspręsta.

Pasinaudokite „Regex“ galia naudodami „Python“

Kai dirbate su tekstiniais failais ir išvestimi, „regex“ yra puikus įrankis, kurį galite turėti. Galite greitai parašyti kodą, kad filtruotumėte arba pakeistumėte konkrečius modelius dokumente.

Įsiminti visus simbolius ir atitikti sekas gali būti sunku, jei jūs tik pradedate nuo regex. Kad geriau suprastumėte įprastas išraiškas, ilgainiui jums tikrai padės nuoroda į simbolių, metodų ir sekų sąrašą.

El
„Python RegEx“ cheatheet pradedantiems programuotojams

Naudokite šį įprastų „Python“ posakių sąrašą, kad galėtumėte geriau naudoti šią universalią programavimo kalbą.

Skaitykite toliau

Susijusios temos
  • Programavimas
  • Programavimas
  • „Python“
Apie autorių
„Deepesh Sharma“ (Paskelbta 41 straipsnis)

Deepesh yra MUO „Linux“ jaunesnysis redaktorius. Jis daugiau nei 3 metus rašė informacinį turinį internete. Laisvalaikiu jam patinka rašyti, klausytis muzikos ir groti gitara.

Daugiau iš „Deepesh Sharma“

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kuriame rasite techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Dar vienas žingsnis…!

Prašome patvirtinti savo el. Pašto adresą el. Laiške, kurį jums ką tik išsiuntėme.

.