Regular Expressions giver programmøren med stærke værktøjer til tekst analyse og manipulation. Findes overalt fra e-handel form validering til high- stakes retssager - hvor advokater søger efter kombinationer af ord i e-mails , der tilføjer op til " skyldig" - regexes hører hjemme i enhver programmør værktøjskasse. Desværre deres mystiske syntaks står som en barriere for mange brugere, der kunne drage fordel af dem. En mulig anvendelse er at scanne en tekst for Universal Resource Locators , kendt i folkemunde som web-adresser . Programmeringssproget Python udretter denne opgave på blot et par linjer kode. Ting du skal
Python 2.6 eller højere , med det IDLE integreret udviklingsmiljø
Tekstfil til test
Vis Flere Instruktioner
1
Open IDLE og skabe en teste tekstfil ved at kopiere og indsætte nogle tilfældige tekst i filen sammen med nogle webadresser . Gem filen som TestText.txt i mappen , der kommer op i save dialogboksen , så du ikke behøver at bekymre sig om stier mellem Python tolk og denne fil.
2
Gå til main IDLE vindue og skriv
>>>> import re
på Python prompt. . Dette indlæser Pythons regulære udtryk motor
3
Læs din test tekst ind Python og holde det i hukommelsen med følgende kommandoer : Hej
>>> TestText = open ( ' OCB_1.txt )
>>> rå = TestText.read ()
OCB_1.txt er navnet på min test -fil - en kopi og pasta af Ambrose Bierce er " en hændelse på Owl Creek Bridge ", med et par URL'er indsat i. I ovenstående kommandoer er tekstfilen åbnes og tildelt variablen TestText , det er så læs i hukommelsen med den tildelte variabel rå
.
4
Pre- kompilere det regulære udtryk for at fremskynde parsing processen. Dette er især nyttigt, når der beskæftiger sig med store tekstfiler . Skriv følgende kommandoer ved Python prompt : Hej
>>> pattobj = re.compile ( https ://( [- \\ w \\ . ] + ) + ( : ? \\ D +) ? ( /( [ \\ w /_ \\ . ] * ( \\ ? \\ S +) ?) ?) ? ")
5
Invoke den findall metoden ved at skrive den relevante regex kommandoen sammen med den variable henvise til teksten i hukommelsen : Hej
findallobj = pattobj.findall (rå )
Dette skaber en ny variabel , findallobj , som indeholder de mønstre fremkommer ved regex
6 .
Vise URL'en regex fundet med print kommandoen : Hej
print ( findallobj )
output ser nogenlunde sådan her : Hej
[( ' www.sjca . edu «) ( ' www.cantlers.com /index.shtml ") ]