Regular Expressions gi programmereren med kraftige verktøy for tekstanalyse og manipulasjon. Finnes overalt fra e -handel form validering til high- stakes rettssaker - hvor advokater søke etter kombinasjoner av ord i e-postmeldinger som legger opp til " skyldig " - regexes hører hjemme i hver programmerer verktøykasse . Dessverre står deres uforståelige syntaks som en barriere for mange brukere som kan ha nytte av dem . En mulig bruk skanner en tekst for Universal Resource Locator , kjent på folkemunne som web-adresser. Programmeringsspråket Python oppnår denne oppgaven i løpet av bare noen få linjer med kode. Du trenger
Python 2.6 eller høyere, med IDLE integrert utviklingsmiljø
Tekst -fil for testing
Vis flere instruksjoner
en
Åpen IDLE og skape en teste tekstfil ved å kopiere og lime inn noen tilfeldig tekst i fila sammen med noen nettadresser. Lagre filen som TestText.txt inn i katalogen som kommer opp i save dialog boksen slik at du ikke trenger å bekymre deg for stier mellom Python tolk og denne filen .
2
Gå til hovedsiden IDLE vindu og skriv
>>>> import re
på Python ledeteksten. . Dette laster Pythons regulært uttrykk motor
3
Les test tekst i Python og holde den i minnet med følgende kommandoer : en
>>> TestText = open (' OCB_1.txt ')
>>> rå = TestText.read ( )
OCB_1.txt er navnet på min test -fil - en kopi og lim av Ambrose Bierce er " en forekomst på Owl Creek Bridge ", med noen nettadresser limt i. I de ovennevnte kommandoene , er tekstfilen åpnet og tilordnet den variabelen TestText , det er da leses inn i minnet med den tildelte variable rå
.
4
Pre - kompilere regulært uttrykk for å fremskynde parsing prosessen. Dette er spesielt nyttig når du arbeider med store tekstfiler . Skriv inn følgende kommandoer ved Python melding:
>>> pattobj = re.compile (' https ://( [- \\ w \\. ] + ) + ( : ? \\ D + ) ? ( /( [ \\ w /_ \\. ] * ( \\ ? \\ S + ) ? ) ? ) ? ')
5
Påkall findall metoden ved å skrive inn den aktuelle regex kommandoen sammen med variabelen henviser til teksten i minnet : en
findallobj = pattobj.findall ( raw)
Dette skaper en ny variabel , findallobj , som inneholder mønstre gitt av regex
seks .
Vise URL regex funnet med print kommandoen : en
print ( findallobj )
utgangen ser omtrent slik ut : en
[ (' www.sjca . edu ') , (' www.cantlers.com /index.shtml ') ]