Primeri Python Regex

Primeri Python Regex



Polna oblika regularnega izraza je regularni izraz. Je pomembna lastnost vsakega programskega jezika. To je vzorec niza, ki se uporablja za ujemanje, iskanje ali zamenjavo nizov v vrednosti niza. Vzorec regularnega izraza je mogoče uporabiti v skriptu Python z uporabo modula »re« Pythona. Ta modul ima veliko vrst funkcij za izvajanje različnih operacij z nizi. Za definiranje vzorcev regularnih izrazov za iskanje ali zamenjavo opravil se uporabljajo različni metaznaki in posebna zaporedja. V tej vadnici so prikazani nameni uporabe nekaterih pogosto uporabljenih metaznakov, posebnih zaporedij in metod regularnih izrazov v skriptu Python.

Nekaj ​​pogosto uporabljenih metaznakov v regularnem izrazu:









Znaki Namen
'+' Uporablja se za ujemanje ene ali več pojavitev določenega znaka v nizu.
'*' Uporablja se za ujemanje z nič ali več pojavitvami določenega znaka v nizu.
'?' Uporablja se za ujemanje nič ali enega pojava določenega znaka v nizu.
'^' Uporablja se za ujemanje z določenim znakom ali nizom na začetku niza.
'$' Uporablja se za ujemanje z določenim znakom ali nizom na koncu niza.
'|' Uporablja se za ujemanje s katerim koli od več nizov v nizu. Deluje kot logika ALI.
‘[]’ Uporablja se za ujemanje vrste znakov.
'{}' Uporablja se za ujemanje določenega števila znakov.



Nekatera pogosto uporabljena posebna zaporedja v regularnem izrazu:





Zaporedja Namen
'\A' Uporablja se za ujemanje z določenim znakom na začetku niza. Deluje kot znak »^«.
'\b', '\B' »\b« se uporablja za ujemanje z nizom, ki vsebuje določen znak ali besedo na začetku ali koncu niza. '\B' deluje nasprotno od '\b'.
'\d', '\D' »\d« se uporablja za ujemanje z decimalnim številom v nizu, ki je podoben »[0-9]«. '\D' deluje nasprotno od '\d'.
'\s', '\S' »\s« se uporablja za ujemanje s presledkom v nizu, ki je podoben »[\n\t\r\v]«. '\S' deluje nasprotno od '\s'.
'\w', '\W' »\w« se uporablja za ujemanje abecednih in številskih znakov v nizu. '\W' deluje nasprotno od '\w'.
'\Z' Uporablja se za ujemanje z določenim znakom na koncu niza. Deluje kot znak '$'.

Primer 1: Ujemanje niza s funkcijo Match().

Funkcija match() se uporablja za ujemanje z vzorcem regularnega izraza na začetku niza. Sintaksa te funkcije je podana takole:



Sintaksa:

ponovna tekma ( vzorec, vrvica, zastave = 0 )

Tukaj je prvi argument uporabljen za definiranje vzorca regularnega izraza. Drugi argument se uporablja za definiranje glavnega niza. Tretji argument je neobvezen in se uporablja za definiranje različnih vrst zastavic.

Ustvarite datoteko Python z naslednjim skriptom, ki se ujema z vzorcem regularnega izraza z definiranim nizom s funkcijo match(). Najprej se za ujemanje uporabi definiran vzorec regularnega izraza. Nato se iskalna beseda vzame od uporabnika in se uporabi kot vzorec regularnega izraza za ujemanje z vrednostjo niza. Če se najde ujemanje, se iskana beseda natisne. V nasprotnem primeru se natisne niz »Ni ustrezne vrednosti«.

#Uvoz potrebnega modula
uvoz re

#Določite funkcijo za tiskanje ujemajočega se rezultata
def matchString ( ) :
#Preverite vrnjeno vrednost funkcije match().
če skupaj z ! = Brez:
tiskanje ( ''' + mat.skupina ( ) + '' se nahaja v '' + strVrednost + ''' )
drugače:
tiskanje ( 'Ni ustrezne vrednosti.' )

#Določite vrednost niza
strVrednost = 'Prvi noter prvi ven.'
#Ujemi niz na podlagi vzorca
mat = ponovna tekma ( '^Prvi' , strVrednost )
#Call funkcija za tiskanje rezultata tekme
matchString ( )

#Vzemite iskalni niz
inVrednost = vnos ( 'Vnesite iskalno vrednost: ' )
mat = ponovna tekma ( inVrednost +, strVrednost )
#Call funkcija za tiskanje rezultata tekme
matchString ( )

Za »prvo« vhodno vrednost se prikaže naslednji izhod:

Primer 2: Iskanje niza s funkcijo Findall().

Funkcija findall() se uporablja za vrnitev vseh ujemajočih se besed, ki so najdene v glavnem nizu kot tuple.

Sintaksa:

re.findall ( vzorec, vrvica, zastave = 0 )

Tukaj je prvi argument uporabljen za definiranje vzorca regularnega izraza. Drugi argument se uporablja za definiranje glavnega niza. Tretji argument je neobvezen in se uporablja za definiranje različnih vrst zastavic.

Ustvarite datoteko Python z naslednjim skriptom, ki od uporabnika prevzame vrednost glavnega niza in vrednost iskalnega niza. Nato uporabite iskalno besedo  v vzorcu regularnega izraza, da poiščete iskalno besedo v glavnem nizu. Število skupnih zadetkov je natisnjeno v izhodu.

#Uvoz potrebnega modula
uvoz re

#Vzemite vrednost niza
inVrednost = vnos ( 'Vnesite niz: ' )

#Vzemite iskalno besedo
srcVrednost = vnos ( 'Vnesite iskalno besedo: ' )

#Išči besedo v nizu
srcResult = re.findall ( srcVrednost + '\V*' , inVrednost )
#Natisnite rezultat iskanja
tiskanje ( 'Beseda '' + srcVrednost + '' je najden v nizu '
+ str ( samo ( srcResult ) ) + 'krat.' )

Glede na rezultat je iskalna beseda 'jesti' dvakrat najdena v glavnem nizu 'Jemo, da živimo, in ne živimo, da jemo'.

Primer 3: Iskanje niza s funkcijo Search().

Search() je še ena funkcija za iskanje določenega vzorca v vrednosti niza. Vsebuje iste argumente kot funkciji match() in findall(). Ustvarite datoteko Python z naslednjim skriptom, ki išče besedo »Python« v vrednosti niza, ki bo prevzet od uporabnika. Če iskana beseda obstaja v vneseni vrednosti, se natisne sporočilo o uspehu. V nasprotnem primeru se natisne sporočilo o napaki.

#Uvozi ponovni modul
uvoz re

#Vzemite vrednost niza
inVrednost = vnos ( 'Vnesite niz: ' )
#Išči določeno besedo v vrednosti niza
srcResult = ponovno iskanje ( r 'Python\w*' , inVrednost )

#Preverite, ali je iskalna beseda najdena ali ne
če srcResult:
tiskanje ( ''' + srcResult.group ( ) + '' se nahaja v '' + inVrednost + ''' )
drugače:
tiskanje ( 'Iskalni niz ni bil najden.' )

Izhod:

Če je vhodni niz »Všeč mi je programiranje Python«, se prikaže naslednji izhod:

Če je vhodni niz »Všeč mi je programiranje PHP«, se prikaže naslednji izhod:

Primer 4: Zamenjajte niz s funkcijo Sub().

Funkcija sub() se uporablja za iskanje določenega niza na podlagi vzorca in njegovo zamenjavo z drugo besedo. Sintaksa te funkcije je podana takole:

Sintaksa:

re.sub ( vzorec, zamenjaj_niz, glavni_niz )

Prvi argument te funkcije vsebuje vzorec, ki se uporablja za iskanje določenega niza v glavnem nizu.

Drugi argument te funkcije vsebuje vrednost niza »zamenjaj«.

Tretji argument te funkcije vsebuje glavni niz.

Ta funkcija vrne zamenjani niz, če v glavnem nizu obstaja katera koli ujemajoča se beseda glede na prvi argument.

Ustvarite datoteko Python z naslednjim skriptom, ki išče dve števki na koncu niza. Če niz vsebuje dve števki na koncu, sta števki nadomeščeni z nizom »$50«.

#Uvozi ponovni modul
uvoz re

#Določite glavni niz
strVrednost = 'Cena knjige je 70'

#Določite iskalni vzorec
vzorec = '[0-9]{2}'

#Določite vrednost zamenjave
zamenjajVrednost = '50 $'

#Išči in zamenjaj niz na podlagi vzorca
modified_strValue = re.sub ( pattern, replaceValue, strValue )
#Natisni izvirne in spremenjene vrednosti niza
tiskanje ( 'Izvirni niz: ' + strVrednost )
tiskanje ( 'Spremenjeni niz: ' + modified_strValue )

Izhod:

Na koncu glavne vrvice jih je bilo 70. Torej je 70 zamenjanih s 50 $ v zamenjanem nizu.

Primer 5: Zamenjajte niz s funkcijo Subn().

Funkcija subn() deluje kot funkcija sub(), le da vrne izhod kot torko, kjer prvi indeks vsebuje zamenjano vrednost, drugi indeks pa skupno število ujemanj.

Ustvarite datoteko Python z naslednjim skriptom, ki išče črke od A do L v nizu »LinuxHint.com« s funkcijo subn():

#Uvozi ponovni modul
uvoz re

#Določite glavni niz
strVrednost = 'LinuxHint.com'

#Določite iskalni vzorec
vzorec = '[DO]'

#Določite vrednost zamenjave
zamenjajVrednost = '*'

#Išči in zamenjaj niz na podlagi vzorca
modified_strValue = re.subn ( pattern, replaceValue, strValue )
#Natisni izvirni niz in izhod funkcije subn()
tiskanje ( 'Izvirni niz: \n ' + strVrednost )
tiskanje ( 'Izhod funkcije subn(): ' )
tiskanje ( modified_strValue )

Izhod:

V skladu z naslednjim rezultatom sta znaka »L« in »H« nadomeščena z znakom »*«.

Primer 6: Razdelite niz s funkcijo Split().

Ustvarite datoteko Python z naslednjim skriptom, ki je uporabil funkcijo split() za razdelitev glavnega niza na več delov na podlagi vzorca regularnega izraza:

#Uvozi ponovni modul
uvoz re

#Določite vrednost niza
strVal= 'Rupa Akter;Nira Chowdhury;Mazharul Islam'
#Določite vzorec, ki bo uporabljen za razdelitev podatkov
vzorec = '[^A-Za-z ]'
#Shranite razdeljene vrednosti na seznam
split_rezultat = ponovno.razdelitev ( vzorec, strVal )
tiskanje ( 'Izhod funkcije split():' )
tiskanje ( split_result )

Izhod:

Glede na izhod je glavni niz razdeljen na tri dele na podlagi vzorca »[^A-Za-z ]«, ki je uporabljen v skriptu.

Zaključek

Namen najpogosteje uporabljenih metaznakov, obsegov in vgrajenih funkcij Python za iskanje, zamenjavo in razdelitev nizov je prikazan v tej vadnici z uporabo preprostih skriptov Python.