Den fulde form for regex er regulært udtryk. Det er et vigtigt træk ved ethvert programmeringssprog. Det er et strengmønster, der bruges til at matche, søge efter eller erstatte strengene i en strengværdi. Regex-mønsteret kan bruges i Python-scriptet ved hjælp af 're'-modulet i Python. Dette modul har mange typer funktioner til at udføre forskellige strengoperationer. Forskellige metategn og specielle sekvenser bruges til at definere regex-mønstrene for at søge eller erstatte opgaverne. Formålet med at bruge nogle almindeligt anvendte metategn, specielle sekvenser og regex-metoder i Python-scriptet er vist i denne tutorial.
Nogle almindeligt anvendte metategn i regex:
Karakterer | Formål |
'+' | Det bruges til at matche en eller flere forekomster af et bestemt tegn i en streng. |
'*' | Det bruges til at matche nul eller flere forekomster af et bestemt tegn i en streng. |
'?' | Det bruges til at matche nul eller én forekomst af et bestemt tegn i en streng. |
'^' | Den bruges til at matche den særlige karakter eller streng i begyndelsen af strengen. |
'$' | Det bruges til at matche det særlige tegn eller streng i slutningen af strengen. |
'|' | Det bruges til at matche en hvilken som helst af de flere strenge i en streng. Det fungerer som OR-logikken. |
'[]' | Det bruges til at matche en række tegn. |
'{}' | Det bruges til at matche et bestemt antal tegn. |
Nogle almindeligt anvendte specielle sekvenser i regex:
Sekvenser | Formål |
'\EN' | Det bruges til at matche det bestemte tegn i starten af strengen. Det fungerer ligesom '^'-tegnet. |
'\b', '\B' | '\b' bruges til at matche den streng, der indeholder det særlige tegn eller ord i begyndelsen eller slutningen af strengen. '\B' virker modsat '\b'. |
'\d', '\D' | '\d' bruges til at matche decimaltallet i strengen, der ligner '[0-9]'. '\D' virker modsat '\d'. |
'\s', '\S' | '\s' bruges til at matche mellemrummet i strengen, der ligner '[\n\t\r\v]'. '\S' virker modsat '\s'. |
'\w', '\W' | '\w' bruges til at matche de alfabetiske og numeriske tegn i strengen. '\W' virker modsat '\w'. |
'\MED' | Det bruges til at matche det bestemte tegn i slutningen af strengen. Det fungerer ligesom '$'-tegnet. |
Eksempel 1: Match strengen ved hjælp af Match()-funktionen
Match()-funktionen bruges til at matche et regex-mønster i begyndelsen af strengen. Syntaksen for denne funktion er givet som følger:
Syntaks:
re.match ( mønster, snor, flag = 0 )
Her bruges det første argument til at definere regex-mønsteret. Det andet argument bruges til at definere hovedstrengen. Det tredje argument er valgfrit og bruges til at definere forskellige typer flag.
Opret en Python-fil med følgende script, der matcher et regex-mønster med en defineret streng ved hjælp af match()-funktionen. Først bruges et defineret regex-mønster til at matche. Dernæst tages et søgeord fra brugeren og bruges som et regex-mønster for at matche med strengværdien. Hvis der findes et match, udskrives søgeordet. Ellers udskrives strengen 'Ingen matchende værdi fundet'.
#Importer nødvendigt modulimport vedr
#Definer funktionen til at udskrive det matchende resultat
def matchString ( ) :
#Tjek returværdien af match()-funktionen
hvis sammen med ! = Ingen:
Print ( ''' + mat.gruppe ( ) + '' findes i '' + strVærdi + ''' )
andet:
Print ( 'Ingen matchende værdi fundet.' )
#Definer strengværdien
strVærdi = 'Først ind først ud.'
#Match strengen ud fra mønsteret
mat = gen.match ( '^Først' , strVærdi )
#Call-funktion for at udskrive kampresultatet
matchString ( )
#Tag søgestrengen
inValue = input ( 'Indtast søgeværdien: ' )
mat = gen.match ( inValue + , strValue )
#Call-funktion for at udskrive kampresultatet
matchString ( )
Følgende output vises for den 'første' inputværdi:
Eksempel 2: Find strengen ved hjælp af Findall()-funktionen
Findall()-funktionen bruges til at returnere alle matchende ord, der findes i hovedstrengen, som en tupel.
Syntaks:
re.findall ( mønster, snor, flag = 0 )
Her bruges det første argument til at definere regex-mønsteret. Det andet argument bruges til at definere hovedstrengen. Det tredje argument er valgfrit og bruges til at definere forskellige typer flag.
Opret en Python-fil med følgende script, der tager en hovedstrengværdi og en søgestrengværdi fra brugeren. Brug derefter søgeordet i regex-mønsteret til at finde søgeordet i hovedstrengen. Antallet af samlede matchninger udskrives i outputtet.
#Importer nødvendigt modulimport vedr
#Tag en strengværdi
inValue = input ( 'Indtast en streng: ' )
#Tag et søgeord
srcValue = input ( 'Indtast et søgeord: ' )
#Søg efter ordet i strengen
srcResult = re.findall ( srcValue + '\I*' , inVærdi )
#Udskriv søgeresultatet
Print ( 'Ordet '' + srcValue + '' findes i strengen'
+ str ( kun ( srcResultat ) ) + ' gange.' )
Ifølge outputtet findes søgeordet 'spis' to gange i hovedstrengen 'Vi spiser for at leve og lever ikke for at spise'.
Eksempel 3: Søg i strengen ved hjælp af Search()-funktionen
Search() er en anden funktion til at søge efter et bestemt mønster i en strengværdi. Den indeholder de samme argumenter som match() og findall() funktionerne. Opret en Python-fil med følgende script, der søger efter ordet 'Python' i en strengværdi, der vil blive taget fra brugeren. Hvis søgeordet findes i inputværdien, udskrives en succesmeddelelse. Ellers udskrives en fejlmeddelelse.
#Importer re modulimport vedr
#Tag en strengværdi
inValue = input ( 'Indtast en streng: ' )
#Søg efter det bestemte ord i strengværdien
srcResult = re.search ( r 'Python\w*' , inVærdi )
#Tjek, at søgeordet er fundet eller ej
hvis srcResultat:
Print ( ''' + srcResult.group ( ) + '' findes i '' + inVærdi + ''' )
andet:
Print ( 'Søgestrengen blev ikke fundet.' )
Produktion:
Følgende output vises, hvis inputstrengen er 'Jeg kan lide Python-programmering':
Følgende output vises, hvis inputstrengen er 'Jeg kan lide PHP-programmering':
Eksempel 4: Erstat strengen ved hjælp af Sub()-funktionen
Sub()-funktionen bruges til at søge i en bestemt streng baseret på mønsteret og erstatte det med et andet ord. Syntaksen for denne funktion er givet som følger:
Syntaks:
re.sub ( mønster, erstat_streng, hovedstreng )
Det første argument i denne funktion indeholder det mønster, der bruges til at søge i den bestemte streng i hovedstrengen.
Det andet argument for denne funktion indeholder strengværdien 'erstat'.
Det tredje argument for denne funktion indeholder hovedstrengen.
Denne funktion returnerer den erstattede streng, hvis der findes et matchende ord i hovedstrengen baseret på det første argument.
Opret en Python-fil med følgende script, der søger efter to cifre i slutningen af strengen. Hvis strengen indeholder to cifre i slutningen, erstattes cifrene med '$50'-strengen.
#Importer re modulimport vedr
#Definer hovedstrengen
strVærdi = 'Bogens pris er 70'
#Definer søgemønsteret
mønster = '[0-9]{2}'
#Definer erstatningsværdien
replaceValue = '$50'
#Søg og erstat strengen baseret på mønsteret
modified_strValue = re.sub ( mønster, replaceValue, strValue )
#Udskriv de originale og ændrede strengværdier
Print ( 'Original streng: ' + strVærdi )
Print ( 'Ændret streng: ' + modified_strValue )
Produktion:
Der var 70 i slutningen af hovedstrengen. Så 70'eren erstattes af $50 i den erstattede streng.
Eksempel 5: Erstat strengen ved hjælp af Subn()-funktionen
Subn()-funktionen fungerer ligesom sub()-funktionen, bortset fra at den returnerer output som en tupel, hvor det første indeks indeholder den erstattede værdi, og det andet indeks indeholder det samlede antal matches.
Opret en Python-fil med følgende script, der søger efter alfabeterne A til L i 'LinuxHint.com'-strengen ved hjælp af subn()-funktionen:
#Importer re modulimport vedr
#Definer hovedstrengen
strVærdi = 'LinuxHint.com'
#Definer søgemønsteret
mønster = '[TIL]'
#Definer erstatningsværdien
replaceValue = '*'
#Søg og erstat strengen baseret på mønsteret
modified_strValue = re.subn ( mønster, replaceValue, strValue )
#Udskriv den originale streng og outputtet af subn()
Print ( 'Original streng: \n ' + strVærdi )
Print ( 'Output af subn() funktion: ' )
Print ( modified_strValue )
Produktion:
Ifølge følgende output erstattes 'L'- og 'H'-tegnene med '*'-tegnet.
Eksempel 6: Split strengen ved hjælp af Split()-funktionen
Opret en Python-fil med følgende script, der brugte split()-funktionen til at opdele hovedstrengen i flere dele baseret på regex-mønsteret:
#Importer re modulimport vedr
#Definer strengværdi
strVal= 'Rupa Akter; Nira Chowdhury; Mazharul Islam'
#Definer det mønster, der skal bruges til at opdele dataene
mønster = '[^A-Za-z ]'
#Gem de opdelte værdier på en liste
split_result = re.split ( mønster, strVal )
Print ( 'Output af split()-funktionen:' )
Print ( split_result )
Produktion:
Ifølge outputtet er hovedstrengen opdelt i tre dele baseret på '[^A-Za-z ]'-mønsteret, der bruges i scriptet.
Konklusion
Formålet med de mest almindeligt anvendte metategn, intervaller og Python indbyggede funktioner til at søge, erstatte og opdele strengene er vist i denne tutorial ved hjælp af simple Python-scripts.