Algajate juhend regulaarsete avaldiste jaoks Pythoni abil

Algajate juhend regulaarsete avaldiste jaoks Pythoni abil

Kui olete programmeerija, on tõenäoline, et teate juba, millised on regulaaravaldised (regex). Regulaarmustreid on rakendatud peaaegu kõigis peamistes programmeerimiskeeltes, kuid siiski ei tunne enamus arendajaid nende mustrite võimsust ja mitmekülgsust.





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





Mis on regulaaravaldised?

Regulaaravaldised on mustrid, mis aitavad kasutajal sobitada tähemärkide kombinatsioone tekstifailides ja stringides. Regulaaravaldiste abil saate filtreerida või leida käsu või dokumendi väljundist konkreetse mustri.





Regulaaravaldiste kasutamise juhtumeid on mitmeid, kõige tuntum neist käsk grep Linuxis . Muud rakendused hõlmavad teabe filtreerimist, näiteks e -posti aadresside ja telefoninumbrite ekstraheerimist andmekogumist.

Peamine põhjus, miks paljud arendajad tavaväljenditest kõrvale kalduvad, on teadmatus mustrite sobitamise võimest. Mõni peab isegi regulaaravaldisi segaseks, kuna mustrites kasutatakse suurt hulka märke ja järjestusi.



Olenemata põhjusest võivad regulaaravaldised olla ja on programmeerimise üks olulisemaid aspekte, millest igaüks peaks teadma.

Kas saate segada 4 GB ja 8 GB mälu

Regulaaravaldised: vastavad märgid ja järjestused

Regex on iseenesest täiesti uus keel. Regulaarne mootor tõlgendab mustreid, mis koosnevad mitmest tähemärgist koosnevast tähemärgist. Põhilised literaalid, näiteks tähtnumbrilised märgid, sobivad omavahel. Kuid keerukad märgid, nagu $, *, +, {jne, aitavad paremat järjestust leida.





  1. Tärn (*): Vastab eelmisele tähemärgile null või enam korda. Tegelase sõnasõnaline tähendus oleks „element korrutatud n korda”. Näiteks kui regulaaravaldis on abc * , sobivad stringid on ab, abc, abcc, abccc, abcccc jne. Väljend [bc]* sobib bc, bcbc, bcbc jne
  2. Veel (+): Sobib ühe või mitme korra eelneva märgiga. Töötamine + iseloom sarnaneb * , 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 (?): Vastab eelmisele märgile null või üks kord. Näiteks muster abc? sobib ainult ab ja abc.
  4. Toru (|): Kasutatakse binaarina VÕI operaator. Vastab ühele torule eelnevale ja järgnevale tähemärgile. Näiteks, a | b sobib kas a või b.
  5. Punkt (.): Sobib tegelasega, kelle isik pole teada. Näiteks, a.c sobib aac, abc, acc, a2c jne.
  6. Porgand (^): Sobib mustri esimese märgiga. Näiteks, ^Ra sobivad sõnadega, mis algavad tähega Välja nagu Jänes, Kährik ja Juhuslik.
  7. Dollar ($): Sobib mustri viimase märgiga. Näiteks, $ sobiks 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] sobivad kõik ühekohalised numbrimärgid.

Regulaaravaldiste mustrites kasutatakse järgmisi järjestusi:

  1. TO: Tagastab vaste, kui järgnevad märgid on stringi alguses. Näiteks, ATsee sobib sõnadega, mis algavad tähega The nagu The, Them, They jne.
  2. b: Tagastab vaste, kui märk leidub sõna alguses või lõpus. Näiteks, bmad ja hullumeelne b sobivad sõnadega nagu tehtud ja nomaad vastavalt.
  3. B: Tagastab vaste, kui märki ei leidu sõna alguses ega lõpus.
  4. d: Vastab stringis olevatele numbrimärkidele. Näiteks, /d* sobib numbritega nagu 1, 12, 1232 jne.
  5. D: Sobitab stringis mitte-numbrilisi märke. /D sobib a, b, c, f jne.
  6. s: Vastab tekstis tühimärgile.
  7. S: Sobib tekstis tühikuteta tähemärgiga.
  8. in: Tagastab vaste, kui string sisaldab tähti ja numbreid, sealhulgas alajooni. Näiteks, sisse sobib a, b, c, d, 1, 2, 3 jne.
  9. IN: Tagastab vaste, kui string ei sisalda tähtnumbrilisi märke ega alajooni.
  10. KOOS: Sobib stringi lõpus olevatele märkidele. Näiteks, lõpp Z sobiks sõnadega, mis lõpevad tähega lõpp näiteks painutada, parandada, parandada jne.

Pythoni meetodid regulaaravaldiste jaoks

Pythonis, re raamatukogu pakub kõiki vajalikke funktsioone ja utiliite, mis on vajalikud regexi rakendamiseks teie programmides. Te ei pea teeki pip abil alla laadima, kuna see on Pythoni tõlgiga eelinstallitud.





Importimiseks re raamatukogus Pythonis, lisage oma skriptile järgmine kood:

import re

Pange tähele, et Pythonis regulaaravaldisi edastades kasutame töötlemata stringe, kuna need ei tõlgenda erimärke nagu n ja t teisiti.

Match ()

The re.match () meetod Pythonis tagastab regulaaravaldise objekti, kui programm leiab määratud stringi algusest vaste. Sellel funktsioonil on kaks põhiargumenti:

re.match(pattern, string)

... kus muster on regulaaravaldis ja string on tekst, mida tuleb otsida.

Vaadake allolevat koodilõiku.

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

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

Väljund:

None

Eespool nimetatud kood naaseb Puudub sest Sõna stringi alguses polnud.

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

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

Väljund:

Word

The re.search () meetod kasutab sarnaseid argumente nagu re.match (). Kui vaste () tagastab ainult stringi alguses olevad vaste, otsing() tagastab stringi mis tahes indeksist leitud vasteid.

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

Pange tähele, et vaste () ja otsing() meetodid tagastavad ainult ühe mustrivaste. Ülalmainitud koodis Sõna ilmub kaks korda. Kuid otsing() funktsioon vastab ainult sõna esimesele esinemisele.

Word

FindAll ()

Nagu võite juba arvata, leidke kõik () meetod tagastab stringi kõik võimalikud vaste.

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

Regulaarobjekti tagastamise asemel tagastab funktsioon findall () kõigi vastete loendi. Saate loendit sirvida, kasutades a silmuse jaoks pythonis .

Poolitamine ()

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

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

Väljund:

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

Alam ()

The sub () meetod võimaldab kasutajal asendada mustri asemel konkreetse sõna. See nõuab järgmisi argumente.

re.sub(pattern, replacement, string)

Kaaluge seda koodilõiku:

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

Väljund:

Dave or Harry must be punished.

Kompileeri ()

The uuesti koostama () meetodit re raamatukogu võimaldab kasutajal salvestada mällu regulaaravaldise mustri kompileeritud versiooni. Seejärel saab kasutaja kompileeritud objekti kasutades kiiresti filtreerida määratud tekstivälja sobitatud mustrite jaoks.

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

Seda funktsiooni kasutatakse peamiselt mustrite salvestamiseks, mis on ressursimahukad ja vajavad töötamiseks palju aega. Mustri eelnevalt objektina koostamine ja salvestamine lahendab selle probleemi.

Kasutage Pythoniga Regexi võimsust

Kui töötate tekstifailide ja väljunditega, on regex suurepärane vahend teie käsutuses. Saate kiiresti kirjutada teatud koodi, et filtreerida või asendada dokumendis olevad mustrid.

Kõigi märkide ja sobivate jadade meeldejätmine võib olla raske, kui alustate regulaaravaldisega. Regulaaravaldiste paremaks muutmiseks aitab aeg -ajalt tähemärkide, meetodite ja järjestuste loendile viitamine kindlasti teid pikas perspektiivis aidata.

Jaga Jaga Piiksuma E -post Python RegEx petuleht algajatele programmeerijatele

Kasutage seda Pythoni regulaaravaldiste loendit, et saaksite seda mitmekülgset programmeerimiskeelt paremini kasutada.

Loe edasi
Seotud teemad
  • Programmeerimine
  • Programmeerimine
  • Python
Autori kohta Deepesh Sharma(79 artiklit avaldatud)

Deepesh on MUO Linuxi noorem toimetaja. Ta kirjutab Linuxis informatiivseid juhendeid, mille eesmärk on pakkuda kõigile uustulnukatele õndsat kogemust. Filmide osas pole kindel, aga kui soovite tehnoloogiast rääkida, on ta teie mees. Vabal ajal võite teda lugeda raamatuid, kuulata erinevaid muusikažanre või mängida kitarri.

Rohkem Deepesh Sharma'st

Telli meie uudiskiri

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

Tellimiseks klõpsake siin