Aloittelijan opas säännöllisiin lausekkeisiin Pythonilla

Aloittelijan opas säännöllisiin lausekkeisiin Pythonilla

Jos olet ohjelmoija, todennäköisesti tiedät jo, mitä säännölliset lausekkeet (regex) ovat. Regex -malleja on toteutettu lähes kaikilla yleisillä ohjelmointikielillä, mutta useimmat kehittäjät eivät kuitenkaan tunnista näiden mallien voimaa ja monipuolisuutta.





Tässä oppaassa on kyse säännöllisistä lausekkeista ja siitä, miten voit käyttää niitä Python -ohjelmointikielellä.





Mitä ovat säännölliset lausekkeet?

Säännölliset lausekkeet ovat kuvioita, jotka auttavat käyttäjää vastaamaan tekstitiedostojen ja merkkijonojen merkkikombinaatioita. Voit käyttää säännöllisiä lausekkeita suodattaaksesi tai löytääksesi tietyn kuvion komennon tai asiakirjan tulostuksesta.





Säännöllisten lausekkeiden käyttötapauksia on useita, joista tunnetuin on grep -komento Linuxissa . Muita sovelluksia ovat tietojen suodatus, kuten sähköpostiosoitteiden ja puhelinnumeroiden poimiminen datan tyhjennyksestä.

Tärkein syy siihen, miksi monet kehittäjät eksyvät säännöllisistä lausekkeista, on tietämättömyys kuvioiden yhdistämisen voimasta. Joidenkin mielestä säännölliset lausekkeet ovat jopa hämmentäviä, koska malleissa käytetään mojova määrä merkkejä ja sekvenssejä.



Olipa syy mikä tahansa, säännölliset lausekkeet ovat ja tulevat olemaan yksi tärkeimmistä ohjelmoinnin näkökohdista, jotka kaikkien pitäisi tietää.

mistä ostaa koiria lähelläni

Säännölliset lausekkeet: hahmot ja sekvenssit

Regex on aivan uusi kieli itsessään. Regex -moottori tulkitsee kuvioita, jotka koostuvat useista merkeistä, joilla on erityiset merkitykset. Peruskirjaimet, kuten aakkosnumeeriset merkit, sopivat yhteen. Mutta monimutkaiset merkit, kuten $, *, +, {jne., Auttavat paremman järjestyksen löytämisessä.





  1. Tähti (*): Vastaa edellistä merkkiä nolla tai useampia kertoja. Hahmon kirjaimellinen merkitys olisi 'Elementti kerrottu n kertaa'. Esimerkiksi, jos säännöllinen lauseke on abc * , merkkijonot ovat ab, abc, abcc, abccc, abcccc jne. Lauseke [bc]* vastaa bc, bcbc, bcbc jne.
  2. Lisää (+): Vastaa edellistä merkkiä yhden tai useamman kerran. Toiminta + luonne on samanlainen kuin * , mutta + merkki jättää kuvion pois, jos merkkiä ei esiinny. Esimerkiksi, abc + vastaa abc, abcc, abccc jne., mutta ei ab.
  3. Kysymysmerkki (?): Vastaa edellistä merkkiä nollaa tai yhtä kertaa. Esimerkiksi kuvio abc? vastaa vain ab ja abc.
  4. Putki (|): Käytetään binäärinä TAI operaattori. Vastaa jompaakumpaa putkea edeltävistä ja sitä seuraavista merkeistä. Esimerkiksi, a | b vastaa joko a tai b.
  5. Piste (.): Sopii hahmoon, jonka henkilöllisyys on tuntematon. Esimerkiksi, a.c vastaa aac, abc, acc, a2c ja niin edelleen.
  6. Porkkana (^): Vastaa kuvion ensimmäistä merkkiä. Esimerkiksi, ^Ra vastaa sanoja, jotka alkavat Ulos kuten kani, pesukarhu ja satunnainen.
  7. Dollari ($): Vastaa kuvion viimeistä merkkiä. Esimerkiksi, $ vastaa sanoja, jotka päättyvät an kuten Van, Dan ja Plan.
  8. Tavuviiva (-): Käytetään merkkialueen määrittämiseen. Esimerkiksi, [0-9] vastaa kaikkia yksinumeroisia numeerisia merkkejä.

Säännöllisissä lausekkeissa käytetyt erityiset sekvenssit ovat:

  1. TO: Palauttaa osuman, jos seuraavat merkit ovat merkkijonon alussa. Esimerkiksi, AT vastaa sanoja, jotka alkavat merkillä The kuten he, he, jne.
  2. b: Palauttaa osuman, jos merkki löytyy sanan alussa tai lopussa. Esimerkiksi, bmad ja hullu b vastaa sanoja, kuten tehty ja paimentolainen vastaavasti.
  3. B: Palauttaa osuman, jos merkkiä ei löydy sanan alussa tai lopussa.
  4. d: Vastaa merkkijonossa olevia numeerisia merkkejä. Esimerkiksi, /d* vastaa numeroita, kuten 1, 12, 1232 jne.
  5. D: Vastaa ei-numeerisia merkkejä merkkijonossa. /D vastaa a, b, c, f jne.
  6. s: Vastaa tekstin välilyöntiä.
  7. S: Vastaa ei-välilyönti-merkkiä tekstissä.
  8. sisään: Palauttaa osuman, jos merkkijono sisältää aakkosnumeerisia merkkejä, myös alaviivat. Esimerkiksi, sisään vastaa a, b, c, d, 1, 2, 3 jne.
  9. SISÄÄN: Palauttaa osuman, jos merkkijono ei sisällä aakkosnumeerisia merkkejä tai alaviivoja.
  10. KANSSA: Vastaa merkkijonon lopussa olevia merkkejä. Esimerkiksi, loppu Z vastaa sanoja, jotka päättyvät loppuun kuten taivuttaa, korjata, hoitaa jne.

Säännöllisten lausekkeiden Python -menetelmät

Pythonissa ,. re kirjasto tarjoaa kaikki tarvittavat toiminnot ja apuohjelmat, joita tarvitaan säännöllisen lausekkeen käyttöönottoon ohjelmissasi. Sinun ei tarvitse ladata kirjastoa pipillä, koska se on esiasennettu Python -tulkin kanssa.





Tuodaksesi re kirjastoon Pythonissa, lisää seuraava koodi skriptiisi:

import re

Huomaa, että kun välitämme säännöllisiä lausekkeita Pythonissa, käytämme raakoja merkkijonoja, koska ne eivät tulkitse erikoismerkkejä, kuten n ja t eri tavalla.

Ottelu()

The re.match () menetelmä Pythonissa palauttaa säännöllisen lausekkeen, jos ohjelma löytää osuman määritetyn merkkijonon alussa. Tämä funktio vaatii kaksi perusargumenttia:

re.match(pattern, string)

...missä kuvio on säännöllinen lauseke ja merkkijono on teksti, jota on etsittävä.

Katso alla oleva koodinpätkä.

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

The r merkki ennen merkkijonoa tarkoittaa raakaa merkkijonoa.

Lähtö:

None

Edellä mainittu koodi palaa Ei mitään koska Sana ei ollut läsnä merkkijonon alussa.

Jos osuma löytyy, voit tulostaa sen käyttämällä ryhmä() menetelmä, joka kuuluu regex -objektiin.

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

Lähtö:

Word

The re.search () menetelmä käyttää samanlaisia ​​argumentteja kuin re.match (). Vaikka match () palauttaa vain merkkijonon alussa olevat vastaavuudet, Hae() palauttaa osumat, jotka löytyvät mistä tahansa merkkijonon hakemistosta.

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

Huomaa, että ottelu() ja Hae() metodit palauttavat vain yhden kuvion vastaavuuden. Edellä mainitussa koodissa Sana ilmestyy kahdesti. Mutta Hae() -toiminto vastaa vain sanan ensimmäistä esiintymää.

Word

FindAll ()

Kuten voit jo arvata, löytää kaikki () menetelmä palauttaa merkkijonon kaikki mahdolliset osumat.

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

Regex -objektin palauttamisen sijaan findall () -funktio palauttaa luettelon kaikista vastaavuuksista. Voit selata luetteloa käyttämällä a silmukalle pythonissa .

Jakaa()

Jos haluat jakaa merkkijonon alimerkkijonoiksi käyttämällä kuviota erottimena, niin jakaa() toiminto on se, jota tarvitset.

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

Lähtö:

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

Sub()

The sub() -menetelmän avulla käyttäjä voi korvata tietyn sanan kuvion sijasta. Se vaatii seuraavat argumentit.

re.sub(pattern, replacement, string)

Harkitse tätä koodinpätkää:

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

Lähtö:

Dave or Harry must be punished.

Koota()

The koota uudelleen () menetelmä re kirjaston avulla käyttäjä voi tallentaa säännöllisen lausekekuvion kootun version muistiin. Sitten käyttäjä voi kääntämän objektin avulla nopeasti suodattaa määritetyn tekstin tyhjennyksen vastaavien kuvioiden perusteella.

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

Tätä toimintoa käytetään ensisijaisesti sellaisten kuvioiden tallentamiseen, jotka vaativat paljon resursseja ja joiden suorittaminen vaatii paljon aikaa. Kuvion kääntäminen ja tallentaminen objektina etukäteen ratkaisee tämän ongelman.

Hyödynnä Regexin voimaa Pythonin avulla

Kun käsittelet tekstitiedostoja ja tulosteita, regex on loistava työkalu käytettävissänne. Voit nopeasti kirjoittaa jonkin koodin asiakirjan tiettyjen mallien suodattamiseksi tai korvaamiseksi.

Kaikkien merkkien ja vastaavien sekvenssien muistaminen voi olla vaikeaa, jos olet vasta aloittamassa regexillä. Jos haluat parantaa säännöllisiä lausekkeita, viittaaminen merkkien, menetelmien ja sekvenssien luetteloon silloin tällöin auttaa sinua varmasti pitkällä aikavälillä.

Jaa Jaa Tweet Sähköposti Python RegEx huijausarkki orastaville ohjelmoijille

Käytä tätä Pythonin säännöllisten lausekkeiden luetteloa, jotta voit oppia käyttämään tätä monipuolista ohjelmointikieltä.

Lue seuraava
Liittyvät aiheet
  • Ohjelmointi
  • Ohjelmointi
  • Python
Kirjailijasta Deepesh Sharma(79 artikkelia julkaistu)

Deepesh on MUO: n nuorempi editori Linuxille. Hän kirjoittaa informaatio -oppaita Linuxissa ja pyrkii tarjoamaan autuaan kokemuksen kaikille uusille tulokkaille. Et ole varma elokuvista, mutta jos haluat puhua tekniikasta, hän on kaverisi. Vapaa -ajallaan löydät hänet lukemasta kirjoja, kuuntelemassa erilaisia ​​musiikkilajeja tai soittamassa kitaraa.

Lisää Deepesh Sharmasta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi