Ja esat programmētājs, iespējams, ka jūs jau zināt, kas ir regulārie izteicieni (regex). Regex modeļi ir ieviesti gandrīz visās galvenajās programmēšanas valodās, taču lielākā daļa izstrādātāju tomēr neatpazīst šo modeļu spēku un daudzpusību.

Šī rokasgrāmata ir par regulārajām izteiksmēm un to, kā jūs varat tās izmantot Python programmēšanas valodā.

Kas ir regulārās izteiksmes?

Regulārās izteiksmes ir modeļi, kas palīdz lietotājam saskaņot rakstzīmju kombinācijas teksta failos un virknēs. Varat izmantot regulāras izteiksmes, lai filtrētu vai atrastu noteiktu modeli komandas vai dokumenta izvadā.

Pastāv dažādi regulāru izteicienu lietošanas gadījumi, no kuriem visslavenākais ir grep komandu Linux. Citas lietojumprogrammas ietver informācijas filtrēšanu, piemēram, e-pasta adrešu un tālruņu numuru izgūšanu no datu izgāztuves.

Galvenais iemesls, kāpēc daudzi izstrādātāji atkāpjas no regulārām izteiksmēm, ir izpratnes trūkums par modeļu saskaņošanas spēku. Dažiem pat regulāras izteiksmes šķiet mulsinošas, jo rakstos tiek izmantots milzīgais rakstzīmju un secību daudzums.

Lai kāds būtu iemesls, regulāras izteiksmes ir un būs viens no vissvarīgākajiem programmēšanas aspektiem, par kuru ikvienam būtu jāzina.

Regulārās izteiksmes: rakstzīmju un secību saskaņošana

Regex pati par sevi ir pilnīgi jauna valoda. Regex motors interpretē modeļus, kas sastāv no vairākām rakstzīmēm, kas aprīkotas ar īpašām nozīmēm. Pamata burtnieki, piemēram, burtciparu rakstzīmes, saskan ar sevi. Bet sarežģītas rakstzīmes, piemēram, $, *, +, {utt. atbalsts augstākas kārtas saskaņošanā.

  1. Zvaigznīte (*): Saskaņo iepriekšējo rakstzīmi nulle vai vairāk reizes. Burtiskā burta nozīme būtu "Elements reizināts n reizes". Piemēram, ja regulārā izteiksme ir abc *, atbilstošās virknes būs ab, abc, abcc, abccc, abcccc utt. Izteiksme [BC] * sakritīs ar bc, bcbc, bcbc utt.
  2. Plus (+): Vienu vai vairākas reizes atbilst iepriekšējam rakstzīmei. Darbs + raksturs ir līdzīgs *, bet + rakstzīme izlaiž modeli, ja raksturs nenotiek. Piemēram, abc + saskaņos abc, abcc, abccc utt. bet ne ab.
  3. Jautājuma zīme (?): Atbilst iepriekšējai rakstzīmei nulle vai vienai reizei. Piemēram, modelis abc? sakritīs tikai ar ab un abc.
  4. Caurule (|): Izmanto kā bināru VAI operators. Atbilst jebkurai no rakstzīmēm, kas ir pirms un pēc pīpes. Piemēram, a | b atbildīs vai nu a, vai b.
  5. Punkts (.): Atbilst rakstzīmei, kuras identitāte nav zināma. Piemēram, a.c sakritīs ar aac, abc, acc, a2c utt.
  6. Burkāns (^): Sakrīt ar raksta pirmo rakstzīmi. Piemēram, ^ Ra sakritīs vārdi, kas sākas ar Ra piemēram, Trusis, Jenots un Random.
  7. Dolārs ($): Sakrīt ar raksta pēdējo rakstzīmi. Piemēram, $ sakritīs ar vārdiem, kas beidzas ar an piemēram, Van, Dens un Plāns.
  8. Defise (-): Izmanto, lai definētu rakstzīmju diapazonu. Piemēram, [0-9] sakritīs ar visām vienciparu skaitliskajām rakstzīmēm.

Īpašās secības, ko izmanto parasto izteiksmes modeļos, ir:

  1. \ A: Atgriež atbilstību, ja virknes sākumā ir sekojošās rakstzīmes. Piemēram, \ Ahe sakritīs vārdus, kas sākas ar The piemēram, The, Them, They utt.
  2. \ b: Atgriež atbilstību, ja raksturs ir atrasts vai nu vārda sākumā, vai beigās. Piemēram, \ bmad un traks \ b sakritīs ar tādiem vārdiem kā izgatavots un klejotājs attiecīgi.
  3. \ B: Atgriež atbilstību, ja rakstzīme nav atrasta vārda sākumā vai beigās.
  4. \ d: Atbilst virknē esošajām ciparu rakstzīmēm. Piemēram, /d* sakritīs ar skaitļiem, piemēram, 1, 12, 1232 utt.
  5. \ D: Sakrīt ar virkni neskaitāmas rakstzīmes. / D sakritīs ar a, b, c, f utt.
  6. \ s: Sakrīt ar atstarpes rakstzīmi tekstā.
  7. \ S: Sakrīt ar rakstzīmi, kas nav atstarpes tekstā.
  8. \ w: Atgriež rezultātu, ja virkne satur burtciparu rakstzīmes, ieskaitot pasvītras. Piemēram, \ w sakritīs ar a, b, c, d, 1, 2, 3 utt.
  9. \ W: Atgriež rezultātu, ja virkne nesatur burtciparu rakstus vai pasvītrojumus.
  10. \ Z: Saskaņo rakstzīmes virknes beigās. Piemēram, beigas \ Z sakritīs ar vārdiem, kas beidzas ar beigas piemēram, saliekt, salabot, tendēt utt.

Python metodes regulārajām izteiksmēm

Programmā Python re bibliotēka nodrošina visas nepieciešamās funkcijas un utilītas, kas nepieciešamas regex ieviešanai jūsu programmās. Jums nav jāielādē bibliotēka, izmantojot pip, jo tā ir iepriekš instalēta kopā ar Python tulku.

Lai importētu re bibliotēkā Python, skriptam pievienojiet šādu kodu:

importa re

Ņemiet vērā, ka, nododot regulāras izteiksmes Python, mēs izmantojam neapstrādātas virknes, jo tās neinterpretē īpašas rakstzīmes, piemēram, \ n un \ t savādāk.

Spēle ()

The atkārtoti saskaņot () metode Python atgriež regex objektu, ja programma norādītās virknes sākumā atrod atbilstību. Šai funkcijai ir divi galvenie argumenti:

atkārtota atbilstība (modelis, virkne)

... kur modeli ir regulārā izteiksme un virkne ir teksts, kas jāmeklē.

Apskatiet zemāk esošo koda fragmentu.

importa re
match = re.match (r'Word ', "Šis teikums satur vārdu")
izdrukāt (saskaņot)

The r rakstzīme pirms virknes apzīmē neapstrādātu virkni.

Izeja:

Nav

Iepriekš minētais kods atgriežas Nav jo Vārds virknes sākumā nebija.

Ja ir atrasta atbilstība, varat to izdrukāt, izmantojot grupa () metode, kas pieder regex objektam.

importa re
match = re.match (r'Word ', "Vārdu ir grūti lasīt")
izdrukāt (match.group (0))

Izeja:

Vārds

Meklēt()

The atkārtota meklēšana () metode ņem līdzīgus argumentus kā re.match (). Kaut arī match () atgriež tikai virknes sākumā esošās spēles, Meklēt() atgriezīs atbilstības, kas atrastas jebkurā virknes indeksā.

importa re
match = re.search (r'Word ', "Šajā teikumā ir vārds. Vārdu ir grūti lasīt. ")
izdrukāt (match.group (0))

Ņemiet vērā, ka spēles () un Meklēt() metodes atgriezīs tikai vienu parauga atbilstību. Iepriekš minētajā kodā Vārds parādās divreiz. Bet Meklēt() funkcija atbildīs tikai vārda pirmajam gadījumam.

Vārds

FindAll ()

Kā jūs jau varat uzminēt, atrast visu () metode atgriež katru iespējamo virknes atbilstību.

importa re
match = re.search (r'Word ', "Šajā teikumā ir vārds. Vārdu ir grūti lasīt. ")
par elem maču:
druka (elem)

Tā vietā, lai atgrieztu regex objektu, funkcija findall () atgriež visu atbilstību sarakstu. Sarakstu var atkārtot, izmantojot a cilpai pitonā.

Sadalīt ()

Ja vēlaties sadalīt virkni apakšstingros, izmantojot modeli kā atdalītāju, tad sadalīt () funkcija ir tā, kas jums nepieciešama.

importa re
split = re.split (r'and ', "Šis vārds un tas, un tas ir atšķirīgi.")
drukāt (sadalīt)

Izeja:

['Šis vārds "," tas "," tas ir atšķirīgs "]

Apakšdaļa ()

The apakšsadaļa () metode ļauj lietotājam modeļa vietā aizstāt konkrētu vārdu. Tam nepieciešami šādi argumenti.

re.sub (raksts, aizstājējs, virkne)

Apsveriet šo koda fragmentu:

importa re
rezultāts = re.sub (r'and ',' vai ', "Deivs un Harijs ir jāsoda.")
izdrukāt (rezultāts)

Izeja:

Deivs vai Harijs ir jāsoda.

Sastādīt()

The re.compile () metodi re bibliotēka ļauj lietotājam atmiņā saglabāt apkopoto regulārās izteiksmes modeļa versiju. Pēc tam, izmantojot kompilēto objektu, lietotājs var ātri filtrēt norādīto teksta izgāztuvi saskaņotajiem modeļiem.

importa re
modelis = re.compile ('Python')
match = pattern.findall ("Python ir lieliska skriptu rakstīšanas valoda. Python ir viegli iemācīties. ")
izdrukāt (saskaņot)

Šo funkciju galvenokārt izmanto, lai saglabātu modeļus, kas prasa daudz resursu un kuru darbināšanai nepieciešams daudz laika. Iepriekš sastādot un saglabājot modeli kā objektu, šī problēma tiek atrisināta.

Izmantojiet Regex spēku ar Python

Strādājot ar teksta failiem un izvadi, regex ir lielisks rīks, kas ir jūsu rīcībā. Jūs varat ātri ierakstīt kodu, lai filtrētu vai aizstātu konkrētus modeļus dokumentā.

Iegaumēt visas rakstzīmes un atbilstošās secības var būt grūti, ja jūs tikai sākat ar regex. Lai labāk izmantotu regulārās izteiksmes, atsauces uz rakstzīmju, metožu un secību sarakstu šad un tad noteikti jums palīdzēs ilgtermiņā.

E-pasts
Python RegEx apkrāptu lapa iesācējiem programmētājiem

Izmantojiet šo Python regulāro izteiksmju sarakstu, lai jūs varētu labāk izmantot šo daudzveidīgo programmēšanas valodu.

Lasiet Tālāk

Saistītās tēmas
  • Programmēšana
  • Programmēšana
  • Python
Par autoru
Deepesh Sharma (Publicēti 41 raksti)

Deepesh ir MUO Linux jaunākais redaktors. Viņš ir rakstījis informatīvo saturu internetā vairāk nekā 3 gadus. Brīvajā laikā viņam patīk rakstīt, klausīties mūziku un spēlēt ģitāru.

Vairāk no Deepesh Sharma

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!

Vēl viens solis !!!

Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.

.