Python Regex -esimerkkejä

Python Regex Esimerkkeja



Regexin täysi muoto on Regular Expression. Se on minkä tahansa ohjelmointikielen tärkeä ominaisuus. Se on merkkijonokuvio, jota käytetään vastaamaan, etsimään tai korvaamaan merkkijonoarvoja. Regex-mallia voidaan käyttää Python-skriptissä Pythonin 're'-moduulin avulla. Tässä moduulissa on monenlaisia ​​toimintoja erilaisten merkkijonotoimintojen suorittamiseen. Erilaisia ​​metamerkkejä ja erikoissarjoja käytetään määrittämään regex-kuvioita tehtävien etsimiseksi tai korvaamiseksi. Joidenkin yleisesti käytettyjen metamerkkien, erikoissekvenssien ja regex-menetelmien käyttötarkoitukset Python-komentosarjassa esitetään tässä opetusohjelmassa.

Joitakin yleisesti käytettyjä metamerkkejä regexissä:









Hahmot Tarkoitus
'+' Sitä käytetään vastaamaan yhtä tai useampaa tietyn merkin esiintymää merkkijonossa.
'*' Sitä käytetään vastaamaan nollaa tai useampaa tietyn merkin esiintymää merkkijonossa.
'?' Sitä käytetään vastaamaan nollaa tai yhtä tiettyä merkkiä merkkijonossa.
'^' Sitä käytetään vastaamaan tiettyä merkkiä tai merkkijonoa merkkijonon alussa.
'$' Sitä käytetään vastaamaan tiettyä merkkiä tai merkkijonoa merkkijonon lopussa.
'|' Sitä käytetään vastaamaan mitä tahansa merkkijonon useista merkkijonoista. Se toimii kuten TAI-logiikka.
'[]' Sitä käytetään yhdistämään useita merkkejä.
'{}' Sitä käytetään täsmäämään tietty määrä merkkejä.



Jotkut tavallisesti käytetyt erikoissekvenssit regexissä:





Jaksot Tarkoitus
'\A' Sitä käytetään vastaamaan tiettyä merkkiä merkkijonon alussa. Se toimii kuten '^'-merkki.
'\b', '\B' Merkkiä '\b' käytetään vastaamaan merkkijonoa, joka sisältää tietyn merkin tai sanan merkkijonon alussa tai lopussa. '\B' toimii vastapäätä '\b'.
'\d', '\D' '\d' vastaa desimaalilukua merkkijonossa, joka on samanlainen kuin '[0-9]'. '\D' toimii vastapäätä '\d'.
'\s', '\S' '\s' vastaa välilyöntiä merkkijonossa, joka on samanlainen kuin '[\n\t\r\v]'. '\S' toimii vastapäätä '\s'.
'\w', '\W' '\w' -merkkiä käytetään vastaamaan merkkijonon aakkos- ja numeerisia merkkejä. '\W' toimii vastapäätä '\w'.
'\KANSSA' Sitä käytetään vastaamaan tiettyä merkkiä merkkijonon lopussa. Se toimii kuten '$'-merkki.

Esimerkki 1: Sovi merkkijono Match()-funktiolla

Match()-funktiota käytetään sovittamaan säännöllinen lausekekuvio merkkijonon alussa. Tämän funktion syntaksi annetaan seuraavasti:



Syntaksi:

re.match ( kuvio, merkkijono, liput = 0 )

Tässä ensimmäistä argumenttia käytetään määrittämään säännöllinen lausekekuvio. Toista argumenttia käytetään päämerkkijonon määrittämiseen. Kolmas argumentti on valinnainen ja sitä käytetään erityyppisten lippujen määrittämiseen.

Luo Python-tiedosto seuraavalla komentosarjalla, joka vastaa regex-kuviota määritetyn merkkijonon kanssa match()-funktion avulla. Ensinnäkin käytetään määritettyä regex-mallia vastaamaan. Seuraavaksi hakusana otetaan käyttäjältä, ja sitä käytetään säännöllisenä lausekkeena merkkijonon arvon kanssa. Jos jokin vastaavuus löytyy, hakusana tulostetaan. Muussa tapauksessa tulostetaan 'Vastaavaa arvoa ei löydy' -merkkijono.

#Tuo tarvittava moduuli
tuonti re

#Määritä toiminto, jolla tulostetaan vastaava tulos
def matchString ( ) :
#Tarkista match()-funktion palautusarvo
jos kera ! = Ei mitään:
Tulosta ( ''' + matto.ryhmä ( ) + '' löytyy '' + strValue + ''' )
muu:
Tulosta ( 'Vastaavaa arvoa ei löytynyt.' )

#Määritä merkkijonoarvo
strValue = 'Ensimmäinen sisällä ensimmäinen ulkona.'
#Yhdistä merkkijono kuvion perusteella
matto = re.match ( '^Ensin' , strValue )
#Soita-toiminto tulostaa ottelun tulos
matchString ( )

#Ota hakumerkkijono
inValue = syöte ( 'Anna hakuarvo:' )
matto = re.match ( inValue + , strValue )
#Soita-toiminto tulostaa ottelun tulos
matchString ( )

Seuraava tulos tulee näkyviin 'ensimmäiselle' tuloarvolle:

Esimerkki 2: Etsi merkkijono Findall()-funktiolla

Findall()-funktiota käytetään palauttamaan kaikki vastaavat sanat, jotka löytyvät päämerkkijonosta monikkona.

Syntaksi:

re.findall ( kuvio, merkkijono, liput = 0 )

Tässä ensimmäistä argumenttia käytetään määrittämään säännöllinen lausekekuvio. Toista argumenttia käytetään päämerkkijonon määrittämiseen. Kolmas argumentti on valinnainen ja sitä käytetään erityyppisten lippujen määrittämiseen.

Luo Python-tiedosto seuraavalla komentosarjalla, joka ottaa käyttäjältä päämerkkijonon arvon ja hakumerkkijonoarvon. Käytä seuraavaksi hakusanaa  säännöllisen lausekkeen mallissa löytääksesi hakusanan päämerkkijonosta. Tulosten kokonaismäärä tulostetaan.

#Tuo tarvittava moduuli
tuonti re

#Ota merkkijonoarvo
inValue = syöte ( 'Syötä merkkijono:' )

#Ota hakusana
srcValue = syöte ( 'Anna hakusana:' )

#Hae sanaa merkkijonosta
srcResult = re.findall ( srcValue + '\Sisään*' , inValue )
#Tulosta hakutulos
Tulosta ( 'sana' + srcValue + '' löytyy merkkijonosta'
+ str ( vain ( srcTulos ) ) + ' ajat.' )

Tuotoksen mukaan hakusana 'syö' löytyy kahdesti 'Syömme elääksemme ja emme elä syödäksemme' -päämerkkijonosta.

Esimerkki 3: Hae merkkijonoa Search()-funktiolla

Search() on toinen funktio, joka hakee tiettyä kuviota merkkijonoarvosta. Se sisältää samat argumentit kuin match()- ja findall()-funktiot. Luo Python-tiedosto seuraavalla skriptillä, joka etsii sanaa 'Python' merkkijonoarvosta, joka otetaan käyttäjältä. Jos hakusana on syöttöarvossa, tulostetaan onnistumisviesti. Muussa tapauksessa tulostetaan virheilmoitus.

#Tuo re-moduuli
tuonti re

#Ota merkkijonoarvo
inValue = syöte ( 'Syötä merkkijono:' )
#Hae tiettyä sanaa merkkijonoarvosta
srcResult = re.search ( r 'Python\w*' , inValue )

#Tarkista, löytyykö hakusana vai ei
jos srcTulos:
Tulosta ( ''' + srcResult.group ( ) + '' löytyy '' + inValue + ''' )
muu:
Tulosta ( 'Hakumerkkijonoa ei löydy.' )

Lähtö:

Seuraava tulos tulee näkyviin, jos syötemerkkijono on 'Pidän Python-ohjelmoinnista':

Seuraava tulos tulee näkyviin, jos syötemerkkijono on 'Pidän PHP-ohjelmoinnista':

Esimerkki 4: Korvaa merkkijono Sub()-funktiolla

Sub()-funktiota käytetään etsimään tiettyä merkkijonoa mallin perusteella ja korvaamaan se toisella sanalla. Tämän funktion syntaksi annetaan seuraavasti:

Syntaksi:

re.sub ( kuvio, korvaa_merkkijono, päämerkkijono )

Tämän funktion ensimmäinen argumentti sisältää kuvion, jota käytetään etsimään tiettyä merkkijonoa päämerkkijonosta.

Tämän funktion toinen argumentti sisältää 'korvaa'-merkkijonon arvon.

Tämän funktion kolmas argumentti sisältää päämerkkijonon.

Tämä funktio palauttaa korvatun merkkijonon, jos päämerkkijonossa on vastaava sana ensimmäisen argumentin perusteella.

Luo Python-tiedosto seuraavalla skriptillä, joka etsii kahta numeroa merkkijonon lopusta. Jos merkkijonon lopussa on kaksi numeroa, numerot korvataan '$50'-merkkijonolla.

#Tuo re-moduuli
tuonti re

#Määritä päämerkkijono
strValue = 'Kirjan hinta on 70'

#Määritä hakumalli
malli = '[0-9]{2}'

#Määritä korvausarvo
korvaaValue = '50 dollaria'

#Etsi ja korvaa merkkijono kuvion perusteella
modified_strValue = re.sub ( kuvio, korvaaValue, strValue )
#Tulosta alkuperäiset ja muokatut merkkijonoarvot
Tulosta ( 'Alkuperäinen merkkijono:' + strValue )
Tulosta ( 'Muokattu merkkijono:' + modified_strValue )

Lähtö:

Pääjonon lopussa oli 70. Joten 70 korvataan 50 dollarilla korvatussa merkkijonossa.

Esimerkki 5: Korvaa merkkijono Subn()-funktiolla

Subn()-funktio toimii kuten sub()-funktio, paitsi että se palauttaa tulosteen monikkona, jossa ensimmäinen indeksi sisältää korvatun arvon ja toinen indeksi sisältää osumien kokonaismäärän.

Luo Python-tiedosto seuraavalla komentosarjalla, joka etsii aakkoset A–L 'LinuxHint.com'-merkkijonosta subn()-funktiolla:

#Tuo re-moduuli
tuonti re

#Määritä päämerkkijono
strValue = 'LinuxHint.com'

#Määritä hakumalli
malli = '[TOI]'

#Määritä korvausarvo
korvaaValue = '*'

#Etsi ja korvaa merkkijono kuvion perusteella
modified_strValue = re.subn ( kuvio, korvaaValue, strValue )
#Tulosta alkuperäinen merkkijono ja subn()
Tulosta ( 'Alkuperäinen merkkijono: \n ' + strValue )
Tulosta ( 'Subn()-funktion tulos:' )
Tulosta ( modified_strValue )

Lähtö:

Seuraavan tulosteen mukaan 'L'- ja 'H'-merkit korvataan '*'-merkillä.

Esimerkki 6: Jaa merkkijono Split()-funktiolla

Luo Python-tiedosto seuraavalla komentosarjalla, joka jakoi päämerkkijonon useisiin osiin split()-funktiolla regex-mallin perusteella:

#Tuo re-moduuli
tuonti re

#Määritä merkkijonoarvo
strVal= 'Rupa Akter; Nira Chowdhury; Mazharul Islam'
#Määritä kuvio, jota käytetään tietojen jakamiseen
malli = '[^A-Za-z ]'
#Tallenna jaetut arvot luetteloon
split_result = re.split ( kuvio, strVal )
Tulosta ( 'Split()-funktion tulos:' )
Tulosta ( split_result )

Lähtö:

Tulosteen mukaan päämerkkijono on jaettu kolmeen osaan skriptissä käytetyn '[^A-Za-z ]' -mallin perusteella.

Johtopäätös

Yleisimmin käytettyjen metamerkkien, alueiden ja Pythonin sisäänrakennettujen funktioiden tarkoitus merkkijonojen etsimiseen, korvaamiseen ja jakamiseen on esitetty tässä opetusohjelmassa yksinkertaisia ​​Python-skriptejä käyttäen.