Reguljära uttryck ger programmeraren med kraftfulla verktyg för textanalys och manipulation . Finns överallt från e -handel form validering till high-stakes tvister - där advokater Sök efter kombinationer av ord i e-postmeddelanden som lägger upp till " skyldig" - regexes hör hemma i varje programmerare verktygslåda . Tyvärr står de svårbegripliga syntax som ett hinder för många användare som kan dra nytta av dem . En möjlig användning skannar en text för Universal Resource Locator , känd i vardagligt tal som webbadresser . Programmeringsspråket Python utför denna uppgift på bara några rader kod . Saker du behöver
Python 2.6 eller högre , med IDLE integrerad utvecklingsmiljö
textfil för att testa
Visa fler instruktioner
1
Öppna IDLE och skapa en testa textfil genom att kopiera och klistra in några random text i filen tillsammans med några webbadresser . Spara filen som TestText.txt i katalogen som kommer upp i Spara dialogrutan så att du inte behöver oroa dig för vägar mellan Pythontolk och denna fil .
2
Gå till huvudmenyn IDLE fönster och typ
>>>> import re
på Python -prompten . . Detta laddar Pythons reguljära uttryck motor
3
Läs ditt test text i Python och hålla den i minnet med följande kommandon :
>>> TestText = open ( ' OCB_1.txt ' ) katalog
>>> raw = TestText.read ( ) katalog
OCB_1.txt är namnet på min testfil - en kopia och pasta av Ambrose Bierce : s " en händelse på Owl Creek Bridge " med några webbadresser klistras in i ovanstående kommandon , är textfilen öppnas och tilldelas variabeln TestText , det läses sedan in i minnet med den tilldelade variabeln rå
.
4
Pre - kompilera det reguljära uttrycket för att påskynda parsning processen . Detta är särskilt användbart när man hanterar stora textfiler . Skriv följande kommandon vid Python prompten :
>>> pattobj = re.compile ( ' https ://( [ - \\ w \\ . ] + ) + ( : ? \\ D + ) ? ( /( [ \\ w /_ \\ . ] * ( \\ ? \\ S + ) ? ) ? ) ? " )
5
Åkalla findall metoden genom att skriva det aktuella regex kommandot tillsammans med variabeln hänvisar till texten i minnet :
findallobj = pattobj.findall ( RAW ) katalog
Detta skapar en ny variabel , findallobj , som innehåller de mönster som uppkommit genom regex
6 .
Visa URL regex hittades med kommandot Skriv ut :
print ( findallobj ) katalog
utgången ser ut ungefär så här :
[ ( ' www.sjca . edu ' ) , ( ' www.cantlers.com /index.shtml ' ) ]