Python vanlig uttrykk

Python vanlig uttrykk
I dette emnet lærer vi Python vanlige uttrykk.

Definisjon: Regelmessige uttrykk, noen ganger kalt RE eller REGEX eller REGEXP, er sekvenser av tegn som samsvarer med mønstre i tekst/streng. Python har en innebygd RE -modul for å utføre dette.

Vanlige bruksområder for et vanlig uttrykk er:

  1. Søk i en streng (søk og finn)
  2. Finn all matchende streng (FindAll)
  3. Split String i Substring (Split)
  4. Erstatt del av en streng (SUB)

Et vanlig uttrykk er en kombinasjon av alfabet, metakaraktører. Så følgende metakarakter er tilgjengelige.

  • \ Dette brukes til å slippe/ignorere den spesielle betydningen av karakter
  • [] Dette indikerer en karakterklasse eks: [A-Z], [A-ZA-Z0-9]
  • ^ Dette samsvarer med begynnelsen av teksten
  • $ Dette samsvarer med slutten av teksten
  • . Dette samsvarer med en hvilken som helst karakter bortsett fra Newline
  • ? Match null eller en forekomst.
  • | Betyr eller (samsvar med noen av karakterene atskilt av det.
  • * Ethvert antall forekomster (inkludert 0 forekomster)
  • + En eller flere forekomster
  • Angi flere forekomster av en foregående re for å matche.
  • () Lukk en gruppe regexp

Hvis vi bruker backslash '\', indikerer det forskjellige sekvenser. Jeg vil bruke tilbakeslag uten dets spesielle betydning bruk '\\'.

  • \ D samsvarer med et hvilket som helst desimalsifret, dette er det samme som Set Class [0-9]
  • \ D samsvarer med en hvilken som helst ikke-sifret karakter
  • \ S samsvarer med ethvert hvitromskarakter.
  • \ S samsvarer med ethvert ikke-hvittespace-karakter
  • \ W samsvarer med enhver alfanumerisk karakter; Dette er det samme som en klasse [A-ZA-Z0-9_].
  • \ W samsvarer med enhver ikke-alfanumerisk karakter.

Følgende metode tilgjengelig i RE -modul:

re.Søk() :

Denne metoden returnerer den matchende delen av strengen, og den stopper etter den første kampen. Så dette kan brukes til å teste et uttrykk i stedet for å trekke ut data.

Syntaks: re.Søk (mønster, streng)
Returverdi:
Ingen : Mønsteret stemmer ikke overens
Streng : mønster matchet

Eks: I dette eksemplet vil søke måned og dato

Import re
regexp = r "([a-za-z]+) (\ d+)"
match = re.Søk (Regexp, "Min sønn bursdag er 20. juli")
Hvis kamp != Ingen:
trykk ("Match på indeks %s, %s" %(match.start (), kamp.end ()))#Dette gir indeks for matchet streng
trykk ("Full kamp: % s" % (kamp.gruppe (0))))
Print ("Måned: % s" % (kamp.gruppe (1))))
trykk ("Dag: % s" % (kamp.gruppe (2))))
ellers:
trykk ("Det gitte regex -mønsteret stemmer ikke overens")

re.kamp() :

Denne metoden søker og returnerer den første kampen. Dette sjekker for kampen bare i begynnelsen av strengen.

Syntaks: re.match (mønster, streng)
Returverdi:
Ingen: Mønsteret stemmer ikke overens
Streng: mønster matchet

Eks: Dette eksemplet for å vise mønster matchet begynnelsen av strengen

Import re
regexp = r "([a-za-z]+) (\ d+)"
match = re.Match (Regexp, "20. juli")
Hvis kamp == ingen:
Skriv ut ("Ikke en gyldig dato")
ellers:
print ("gitt streng: % s" % (match.gruppe()))
Print ("Måned: % s" % (kamp.gruppe (1))))
trykk ("Dag: % s" % (kamp.gruppe (2))))

Eks: For å vise mønster ikke matchet i begynnelsen

Import re
match = re.Match (Regexp, "Min sønn bursdag er 20. juli")
Hvis kamp == ingen:
Skriv ut ("Ikke en gyldig dato")
ellers:
print ("gitt streng: % s" % (match.gruppe()))
Print ("Måned: % s" % (kamp.gruppe (1))))
trykk ("Dag: % s" % (kamp.gruppe (2))))

re.findAll ():

Denne metoden returnerer alle mønsterkamper i en streng. Strengen søkes fra start til slutt, og kamper returneres i den rekkefølgen som er funnet.

Syntaks : re.FindAll (mønster, streng)
Returverdi
Tom streng ([)]: Mønster stemmer ikke overens
Liste over streng: mønster matchet

Eks: Regelmessig uttrykk for å finne sifre

Import re
String = "" "Bangalore Pincode er 560066 og
Gulbarga Pincode er 585101 "" "
regexp = '\ d+'
match = re.FindAll (regexp, streng)
trykk (match)

Eks: Finn mobilnummer (nøyaktig 10 -sifret nummer) fra gitt tekst

Import re
String = "" "Bangalore Office Number 1234567891,
Nummeret mitt er 8884278690, nødkontakt 3456789123
Ugyldig nummer 898883456 "" "
regexp = '\ d 10'#Dette vanlige uttrykket for å matche nøyaktig 10 sifre nummer
match = re.FindAll (regexp, streng)
trykk (match)

re.kompilere():

Regelmessige uttrykk er samlet inn i mønsterobjekter og kan brukes på metoder. Eksempel på å søke etter mønsterkamper, strengsubstitusjoner.

Eks:

Import re
e = re.kompilere ('[a-e]')
trykk (f.eks.FindAll ("Jeg er født på 11 a.M. 20. juli 1989 "))
e = re.kompilere ('\ d') # \ d tilsvarer [0-9].
trykk (f.eks.FindAll ("Jeg er født på 11 a.M. 20. juli 1989 "))
p = re.kompilere ('\ d+')#gruppe av ett eller flere sifre
trykk (s.FindAll ("Jeg er født på 11 a.M. 20. juli 1989 "))

re.dele():

Splitt streng basert på forekomster av et mønster. Hvis det er funnet mønster, returneres de gjenværende tegnene fra strengen som en del av den resulterende listen. Vi kan spesifisere den maksimale delingen for en gitt streng.

Syntaks - re.Split (mønster, streng, maxSplit = 0)
Returverdier:
Tom liste ([]): Mønster stemmer ikke overens
Liste over streng: mønster matchet

Eks:

Import re
# '\ W+' samsvarer med ikke-alfanumeriske tegn eller gruppe av tegn
# delt etter å ha funnet ',' eller hvitespace '
trykk (re.split ('\ w+', 'bra, bedre, best'))
trykk (re.Split ('\ W+', "Book's Books Books"))
# Her ':', ", ',' er ikke alfanumerisk der splitting skjer
trykk (re.split ('\ w+', 'født 20. juli 1989, klokka 11:00')))
# '\ d+' betegner numeriske tegn eller gruppe av tegn
# Spliting skjer på '20', '1989', '11', '00'
trykk (re.Split ('\ d+', 'født 20. juli 1989, klokka 11:00')))
# Spesifisert maksimal splittelse som 1
trykk (re.split ('\ d+', 'født 20. juli 1989, klokka 11:00
Am ', maxsplit = 1))

re.under():

Her er 'sub' betydningen en substring. I denne funksjonen blir det gitte regulære uttrykket (mønsterparameter) matchet i den gitte strengen (strengparameter); Hvis substringen blir funnet, erstattes den av en Repl -parameter.
Her i tellingen, spesifiser antall ganger Regex er erstattet.
Her kan vi spesifisere regex -flagget (eks: re. Ignorecase)

Syntaks:- re.Sub (mønster, repl, streng, telle = 0, flagg = 0)
Returverdi:
Returnerer en ny streng etter å ha byttet ut et annet mønster
Returnerer den samme strengen

Eks:

Import re
# Eks: mønster 'lly' samsvarer med strengen på "vellykket" og "Delly"
trykk (re.sub ('lly', '#$', 'legeavtale booket vellykket i Delly')))
# Eks: Case Hasbeen ignorert, ved bruk av flagg, 'Lly' Wil Match to ganger med strengen
# Etter matching erstattes 'Lly' av '~*' i "vellykket" og "Delly".
trykk (re.sub ('lly', '#$', 'legeavtale booket vellykket i Delly', Flags = re.Ignorecase))
# Eks: sak Senstivitet, 'lly' vil ikke bli replced.
trykk (re.sub ('lly', '#$', 'legeavtale booket vellykket i Delly')))
# Eks: Som telling = 1, er erstatning av maksimal tider 1
trykk (re.sub ('lly', '#$', 'legeavtale booket vellykket i Delly', Count = 1, Flags = re.Ignorecase))

re.Subn ():

subn () funksjonalitet samme som sub () på alle måter; Den eneste forskjellen er å gi produksjon. Den returnerer en tuple som inneholder en telling av totalt erstatning og den nye strengen.
Syntaks:- re.Subn (mønster, repl, streng, telling = 0, flagg = 0)

Eks:

Import re
trykk (re.Subn ('Lly', '#$', 'Doctor Approution booket vellykket i Delly'))
t = re.Subn ('lly', '#$', 'Doctor Approution booket vellykket i Delly', Flags = re.Ignorecase)
trykk (t)
Print (Len (T))
# Dette vil gi samme produksjon som Sub ()
Print (t [0])

re.flukt() :

Denne returnerer strengen med Backslash '\' før hvert ikke-alfanumerisk tegn. Dette er nyttig hvis vi ønsker å matche en vilkårlig bokstavelig streng som kan ha vanlig uttrykk metakaraktører i den.
Syntaks:- re.Escape (String)
Eks:

Import re
# under saken har bare ", er ikke alfanumerisk
trykk (re.Escape ("Doktoravtale booket vellykket klokken 13"))
# Under saken har, ", CARET '^', '-', '[]', '\' er ikke alfanumerisk
trykk (re.Escape ("Han spurte hva som er dette [0-9], sa jeg \ t ^nummerklasse"))

Konklusjon:

Artikkelen dekket tingene som trengs for å forstå det vanlige uttrykket i ethvert applikasjon. Vi har lært forskjellige metoder og metakarakterer som er til stede i Python regexp ved hjelp av eksempler.