Reguläre Ausdrücke stellen die Programmierer mit leistungsstarken Tools zur Textanalyse und Manipulation. Wo Anwälte Suche nach Kombinationen von Wörtern in E-Mails , die sich auf " schuldig" hinzufügen - - reguläre Ausdrücke gehören in jeder Programmierer die Werkzeugkiste überall aus E-Commerce- Formular-Validierung , um High-Stakes Rechtsstreitigkeiten gefunden . Leider steht ihre arkanen Syntax als ein Hindernis für viele Nutzer , die davon profitieren könnten . Eine mögliche Anwendung ist das Scannen einen Text für Universal Resource Locator , umgangssprachlich als Web-Adressen bekannt. Die Python Programmiersprache erfüllt diese Aufgabe in nur wenigen Zeilen Code. Things You Need
Python 2.6 oder höher , werden mit der integrierten Entwicklungsumgebung IDLE
Text -Datei zum Testen
anzeigen Weitere Anweisungen
1
öffnen IDLE und erstellen testen Textdatei per Kopieren und Einfügen einige zufällige Text in die Datei zusammen mit einigen URLs . Speichern Sie die Datei in das Verzeichnis TestText.txt , das kommt in den Speichern Dialog , so dass Sie nicht haben, um über Wege zwischen den Python-Interpreter und diese Datei zu kümmern.
2
zu den wichtigsten Go IDLE -Fenster und geben
>>>> import re
am Python-Prompt . . Dies lädt Pythons reguläre Ausdrücke
3
Lesen Sie Ihre Test- Text in Python und halten Sie sie in Erinnerung mit den folgenden Befehlen :
>>> TestText = open (' OCB_1.txt ')
>>> raw = TestText.read ()
OCB_1.txt ist der Name meiner Test-Datei - eine Kopie und Paste Ambrose Bierce " ein Vorfall an der Owl Creek Bridge ", mit ein paar URLs in. in den obigen Befehlen eingefügt wird, wird die Textdatei geöffnet und der Variablen zugewiesen TestText , es wird dann in den Speicher mit der zugewiesenen Variable raw lesen
.
4
Pre- kompilieren den regulären Ausdruck , um die Beschleunigung der Parsen . Dies ist besonders nützlich beim Umgang mit großen Textdateien. Geben Sie die folgenden Befehle an die Python-Prompt :
>>> pattobj = re.compile ( 'https ://( [- \\ w \\ . ] + ) + ( : \\ D +) ? ( /( [ \\ w /_ \\ . ] * ( \\ ? \\ S +) ? ?)) ? ')
5
Rufen Sie den findall Methode , indem Sie den entsprechenden Befehl regex zusammen mit der Variable, die sich auf den Text in Erinnerung :
findallobj = pattobj.findall ( raw)
Dies schafft eine neue Variable , findallobj , dass die Muster ergab die regex enthält
6 .
Blenden Sie die URL die Regex mit dem Befehl print gefunden:
print ( findallobj )
die Ausgabe sieht etwa so aus:
[ ( ' www.sjca . edu '), ( ' www.cantlers.com /index.shtml ')]