Kui olete programmeerija, on tõenäoline, et teate juba, mis on regulaaravaldised (regex). Regex-mustreid on rakendatud peaaegu igas peavoolu programmeerimiskeeles, kuid siiski ei tunnusta enamik arendajaid nende mustrite võimsust ja mitmekülgsust.

See juhend käsitleb regulaaravaldisi ja nende kasutamist Pythoni programmeerimiskeeles.

Mis on regulaaravaldised?

Tavaväljendid on mustrid, mis aitavad kasutajal tekstifailides ja stringides märgikombinatsioone sobitada. Regulaaravaldisi saate kasutada käsu või dokumendi väljundist konkreetse mustri filtreerimiseks või leidmiseks.

Regulaaravaldiste kasutamise juhtumeid on erinevaid, neist tuntuim grepi käsk Linuxis. Muud rakendused hõlmavad teabe filtreerimist, näiteks e-posti aadresside ja telefoninumbrite väljavõtmist andmehoidlast.

Peamine põhjus, miks paljud arendajad tavaväljenditest kõrvale kalduvad, on teadmatus mustrite sobitamise võimust. Mõnede arvates on regulaaravaldised segaduses mustrites kasutatud kopsaka tähemärkide ja järjestuste tõttu.

Ükskõik, mis põhjus võib olla, on regulaaravaldised ja saavad programmeerimise üheks olulisemaks aspektiks, millest kõik peaksid teadma.

Tavaväljendid: tähemärkide ja järjestuste sobitamine

Regex on omaette täiesti uus keel. Regex-mootor tõlgendab mustreid, mis koosnevad mitmest konkreetse tähendusega varustatud tähemärgist. Põhilised literaalid nagu tähtnumbrilised tähemärgid sobivad omavahel. Kuid keerulised tähemärgid, näiteks $, *, +, {jne. abi kõrgemat järku sobitamisel.

  1. Tärn (*): Sobib eelneva tähemärgi nulliga või rohkem korda. Tegelase sõnasõnaline tähendus oleks "Element korrutatud n korda". Näiteks kui regulaarne avaldis on abc *, sobivad stringid on ab, abc, abcc, abccc, abcccc jne. Väljend [bc] * sobib bc, bcbc, bcbc jne
  2. Pluss (+): Sobib eelneva tähemärgiga üks või mitu korda. Süsteemi töö + iseloom on sarnane *, kuid + märk jätab mustri välja, kui märki ei esine. Näiteks, abc + sobib abc, abcc, abccc jne kuid mitte ab.
  3. Küsimärk (?): Sobib eelneva tähemärgi nulliga või ühe korraga. Näiteks muster abc? sobib ainult ab ja abc.
  4. Toru (|): Kasutatakse binaarsena VÕI operaator. Sobib torule eelneva ja järgneva tähemärgiga. Näiteks, a | b sobib kas a või b.
  5. Punkt (.): Sobib tähemärgiga, kelle identiteet pole teada. Näiteks, a.c sobib aac, abc, acc, a2c jne.
  6. Porgand (^): Sobitab mustri esimese märgi. Näiteks, ^ Ra sobivad sõnad algusega Ra nagu Jänes, Kährik ja Juhuslik.
  7. Dollar ($): Sobitab mustri viimase märgi. Näiteks, $ sobib sõnadega, mis lõpevad tähega an nagu Van, Dan ja Plan.
  8. Sidekriips (-): Kasutatakse tähemärkide vahemiku määratlemiseks. Näiteks, [0-9] ühilduvad kõigi ühekohaliste numbrimärkidega.

Spetsiaalsed järjestused, mida kasutatakse regulaarsete ekspressioonimustritena, on:

  1. \ A: Tagastab vaste, kui järgnevad tähemärgid on stringi alguses olemas. Näiteks, \ AThe sobib sõnadega, mis algavad tähega The nagu näiteks, nemad, nemad jne.
  2. \ b: Tagastab vaste, kui märk on leitud sõna alguses või lõpus. Näiteks, \ bmad ja hull \ b sobib sõnadega nagu tehtud ja nomaad vastavalt.
  3. \ B: Tagastab vaste, kui märki ei leidu sõna alguses ega lõpus.
  4. \ d: Sobitab stringis olevad numbrilised tähemärgid. Näiteks, /d* sobib numbritega nagu 1, 12, 1232 jne.
  5. \ D: Sobib stringis mitte numbriliste tähemärkidega. / D sobib a, b, c, f jne.
  6. \ s: Sobitab tekstis tühimärgi.
  7. \ S: Sobitab tekstis tühimärgi.
  8. \ w: Tagastab vaste, kui string sisaldab tähtnumbrilisi märke, sealhulgas alakriipsusid. Näiteks, \ w sobib a, b, c, d, 1, 2, 3 jne.
  9. \ W: Tagastab vaste, kui string ei sisalda tähtnumbrilisi märke ega alakriipe.
  10. \ Z: Sobitab stringi lõpus olevad märgid. Näiteks, lõpp \ Z sobib sõnadega, mis lõpevad tähega lõpp nagu painutada, parandada, kipuda jne.

Pythoni meetodid regulaaravaldiste jaoks

Pythonis on re teek pakub kõiki vajalikke funktsioone ja utiliite, mis on vajalikud regexi rakendamiseks teie programmides. Teeki ei pea pipi abil alla laadima, kuna see on eelinstallitud Pythoni tõlkega.

Rakenduse importimiseks re raamatukogu Pythonis, lisage skriptile järgmine kood:

impordi re

Pange tähele, et Pythonis regulaaravaldiste edastamisel kasutame tooreid stringe, kuna need ei tõlgenda erimärke nagu \ n ja \ t erinevalt.

Vaste ()

The uuesti sobima () meetod Pythonis tagastab regex-objekti, kui programm leiab määratud stringi alguses vaste. Sellel funktsioonil on kaks põhiargumenti:

uuesti sobima (muster, string)

... kuhu muster on regulaarne väljend ja string on tekst, mida tuleb otsida.

Heitke pilk allpool olevale koodilõigule.

impordi re
match = re.match (r'Word ', "See lause sisaldab sõna")
print (vaste)

The r märk enne stringi tähistab toorstringi.

Väljund:

Puudub

Eelnimetatud kood naaseb Puudub sest Sõna ei olnud stringi alguses kohal.

Kui leitakse vaste, saate mängu printida, kasutades Grupp() meetod, mis kuulub regex-objekti juurde.

impordi re
match = re.match (r'Word ', "Sõna on raskesti loetav")
print (match.group (0))

Väljund:

Sõna

Otsing()

The re.search () meetod võtab sarnaseid argumente nagu re.match (). Kui match () tagastab ainult stringi alguses olevad vasted, otsing() tagastab stringi mis tahes indeksist leitud vasted.

impordi re
match = re.search (r'Word ', "See lause sisaldab Wordi. Sõna on raskesti loetav. ")
print (match.group (0))

Pange tähele, et vaste () ja otsing() meetodid tagastavad ainult ühe mustri vaste. Eespool nimetatud koodis Sõna ilmub kaks korda. Kuid otsing() funktsioon sobib ainult sõna esmakordse esinemisega.

Sõna

FindAll ()

Nagu juba arvata oskate, on findall () meetod tagastab stringi kõik võimalikud vasted.

impordi re
match = re.search (r'Word ', "See lause sisaldab Wordi. Sõna on raskesti loetav. ")
matši elemendi jaoks:
print (elem)

Regex-objekti tagastamise asemel tagastab funktsioon findall () kõigi vastete loendi. Loendis saate itereerida, kasutades a silmuseks pythonis.

Poolita ()

Kui soovite stringi alamstringideks jagada, kasutades eraldajana mustrit, siis jagama () funktsioon on see, mida vajate.

impordi re
split = re.split (r'and ', "See sõna ja see ning see on erinevad.")
print (jagatud)

Väljund:

['See sõna "," see "," see on erinev. "]

Alam ()

The alam () meetod võimaldab kasutajal asendada mustri asemel konkreetne sõna. Selleks on vaja järgmisi argumente.

re.sub (muster, asendus, string)

Mõelge sellele koodilõigule:

impordi re
tulemus = re.sub (r'and ',' või ', "Dave ja Harry tuleb karistada.")
print (tulemus)

Väljund:

Dave või Harry tuleb karistada.

Koosta ()

The re.compile () meetod re teek võimaldab kasutajal salvestada regulaaravaldise mustri kompileeritud versiooni mällu. Seejärel saab kasutaja kompileeritud objekti abil sobiva mustri jaoks määratud teksti väljavõtte kiiresti filtreerida.

impordi re
muster = re.compile ('Python')
match = pattern.findall ("Python on suurepärane keel skriptide kirjutamiseks. Pythoni on lihtne õppida. ")
print (vaste)

Seda funktsiooni kasutatakse peamiselt mustrite salvestamiseks, mis on ressursimahukad ja mille käitamiseks on vaja palju aega. Mustri kui objekti eelnevalt koostamine ja salvestamine lahendab selle probleemi.

Kasutage Regexi jõudu Pythoni abil

Kui töötate tekstifailide ja väljundiga, on regex suurepärane vahend teie käsutuses. Dokumendis konkreetsete mustrite filtreerimiseks või asendamiseks saate kiiresti koodi kirjutada.

Kõigi tähemärkide ja sobivate järjestuste meeldejätmine võib olla keeruline, kui alles alustate regexiga. Regulaaravaldiste paremaks muutmiseks aitab pikas perspektiivis kindlasti viide iga natukese aja tagant märkide, meetodite ja järjestuste loendile.

E-post
Pythoni RegExi petulehed alustavatele programmeerijatele

Kasutage seda Pythoni regulaaravaldiste loendit, et saaksite selle mitmekülgse programmeerimiskeele kasutamist paremini kasutada.

Loe edasi

Seotud teemad
  • Programmeerimine
  • Programmeerimine
  • Python
Autori kohta
Sügav Sharma (41 artiklit on avaldatud)

Deepesh on MUO Linuxi nooremtoimetaja. Ta on kirjutanud Internetis infosisu üle 3 aasta. Vabal ajal meeldib talle kirjutada, muusikat kuulata ja kitarri mängida.

Veel Deepesh Sharmalt

Telli meie uudiskiri

Liituge meie uudiskirjaga, kus leiate tehnilisi näpunäiteid, ülevaateid, tasuta e-raamatuid ja eksklusiivseid pakkumisi!

Veel üks samm !!!

Palun kinnitage oma e-posti aadress e-kirjas, mille just teile saatsime.

.