Einstieg in Reguläre Ausdrücke
()
About this ebook
Reguläre Ausdrücke sind ein wichtiges Werkzeug für jeden Programmierers. Sie stehen in verschiedensten Unix-Tools und in Programmiersprachen wie Perl, Java, JavaScript und C# zur Verfügung. Haben Sie dieses Buch durchgearbeitet, werden Sie die wichtigsten Elemente regulärer Ausdrücke kennen und verstehen, wie Sie mit ihnen richtig Zeit sparen können.
Michael Fitzgerald
Michael Fitzgerald is a freelance writer and trainer specializing in XML and related technologies. He is the author of Building B2B Applications with XML and XSL Essentials, both published by John Wiley & Sons, and has published several articles for XML.com on the O'Reilly Network.
Related to Einstieg in Reguläre Ausdrücke
Related ebooks
Machine Learning – kurz & gut: Eine Einführung mit Python, Pandas und Scikit-Learn Rating: 5 out of 5 stars5/5C++ – kurz & gut: Aktuell zu C++17 Rating: 4 out of 5 stars4/5Prinzipien des Softwaredesigns: Entwurfsstrategien für komplexe Systeme Rating: 0 out of 5 stars0 ratingsVue.js kurz & gut Rating: 0 out of 5 stars0 ratingsWeniger schlecht programmieren Rating: 4 out of 5 stars4/5Programmieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5Programmieren lernen mit Computerspielen: In Visual Basic 5.0 / 6.0 Rating: 0 out of 5 stars0 ratingsSQL-Abfragen optimieren: Was Entwickler über Performance wissen müssen Rating: 0 out of 5 stars0 ratingsF#: Ein praktischer Einstieg Rating: 0 out of 5 stars0 ratingsC# 8.0 – kurz & gut Rating: 0 out of 5 stars0 ratingsPython | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Rating: 0 out of 5 stars0 ratingsPython programmieren lernen: Der spielerische Einstieg mit Minecraft Rating: 0 out of 5 stars0 ratingsBootstrap kurz & gut Rating: 0 out of 5 stars0 ratingsProgrammieren lernen für Kinder - Einsteiger Rating: 0 out of 5 stars0 ratingsJava – kurz & gut Rating: 0 out of 5 stars0 ratingsLinux – kurz & gut: Die wichtigen Befehle Rating: 4 out of 5 stars4/5C++-Standardbibliothek - kurz & gut Rating: 0 out of 5 stars0 ratingsC++17: Praxiswissen zum neuen Standard. Von C++11 bis 17 Rating: 0 out of 5 stars0 ratingsHacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsLinux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Rating: 0 out of 5 stars0 ratingsModerne Datenzugriffslösungen mit Entity Framework 6 Rating: 0 out of 5 stars0 ratingsJavaScript und Ajax: Das Praxisbuch für Web-Entwickler Rating: 0 out of 5 stars0 ratingsC# 6.0 – kurz & gut Rating: 5 out of 5 stars5/5Python lernen – kurz & gut Rating: 0 out of 5 stars0 ratingsZukunftssichere Architektur: So bauen Sie monolithische Anwendungen zu komponentenorientierten um Rating: 0 out of 5 stars0 ratingsHacken mit Kali-Linux: Schnelleinstieg für Anfänger Rating: 0 out of 5 stars0 ratingsEinführung in Perl Rating: 5 out of 5 stars5/5JavaScript kurz & gut Rating: 3 out of 5 stars3/5Webseiten-Layout mit CSS: Der perfekte Einstieg in Cascading Style Sheets Rating: 0 out of 5 stars0 ratings
Software Development & Engineering For You
Digital Painting Workbook Rating: 0 out of 5 stars0 ratingsSoftwarearchitektur für Dummies Rating: 0 out of 5 stars0 ratingsEinfach Java: Gleich richtig programmieren lernen Rating: 0 out of 5 stars0 ratingsEinfach Python: Gleich richtig programmieren lernen Rating: 0 out of 5 stars0 ratingsSketchnotes in der IT: Abstrakte Themen mit Leichtigkeit visualisieren Rating: 0 out of 5 stars0 ratingsProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratings3D-Drucken für Einsteiger: Ohne Frust 3D-Drucker selbst nutzen Rating: 0 out of 5 stars0 ratingsZertifizierung für Softwarearchitekten: Ihr Weg zur iSAQB-CPSA-F-Prüfung Rating: 0 out of 5 stars0 ratingsScrum: Agiles Projektmanagement und Scrum erfolgreich anwenden Rating: 0 out of 5 stars0 ratingsEbenen in Adobe Photoshop CC und Photoshop Elements - Gewusst wie Rating: 0 out of 5 stars0 ratingsChange Management für Anfänger: Veränderungsprozesse Verstehen und Aktiv Gestalten Rating: 1 out of 5 stars1/5Weniger schlecht Projekte managen: Ohne Krise zum Projekterfolg Rating: 0 out of 5 stars0 ratingsUML @ Classroom: Eine Einführung in die objektorientierte Modellierung Rating: 0 out of 5 stars0 ratingsKnigge für Softwarearchitekten. Reloaded Rating: 0 out of 5 stars0 ratingsKOMA-Script: Eine Sammlung von Klassen und Paketen für LaTeX 2e Rating: 0 out of 5 stars0 ratingsAgiles Requirements Engineering und Testen Rating: 0 out of 5 stars0 ratingsDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5Modellbasiertes Requirements Engineering: Von der Anforderung zum ausführbaren Testfall Rating: 0 out of 5 stars0 ratingsIT Wissensmanagement: Theorie und Praxis Rating: 0 out of 5 stars0 ratingsBaukunst für Softwarearchitekten: Was Software mit Architektur zu tun hat Rating: 0 out of 5 stars0 ratingsScrum: Agiles Projektmanagement erfolgreich einsetzen Rating: 4 out of 5 stars4/5Agile Softwareentwicklung: Ein Leitfaden für Manager Rating: 0 out of 5 stars0 ratingsLean Management für Einsteiger: Erfolgsfaktoren für Lean Management – Lean Leadership & Co. als langfristige Erfolgsgaranten Rating: 0 out of 5 stars0 ratingsAgiles Projektmanagement: Scrum für Einsteiger Rating: 0 out of 5 stars0 ratingsLean Production - Grundlagen: Das Prinzip der schlanken Produktion verstehen und in der Praxis anwenden. Schlank zur Wertschöpfung! Rating: 0 out of 5 stars0 ratingsKanban für Anfänger: Grundlegendes über den Einsatz von Kanban in der Industrie und der Softwareentwicklung Rating: 0 out of 5 stars0 ratingsSoftwareentwicklungsprozess: Von der ersten Idee bis zur Installation Rating: 0 out of 5 stars0 ratingsAgiles Produktmanagement mit Scrum: Erfolgreich als Product Owner arbeiten Rating: 3 out of 5 stars3/5
Reviews for Einstieg in Reguläre Ausdrücke
0 ratings0 reviews
Book preview
Einstieg in Reguläre Ausdrücke - Michael Fitzgerald
Einstieg in Reguläre Ausdrücke
Michael Fitzgerald
Thomas Demmig
Inhalt
Vorwort
Wer dieses Buch lesen sollte
Was Sie für dieses Buch benötigen
Typographische Konventionen
Danksagung
1. Was ist ein regulärer Ausdruck?
Ein Anfang mit Regexpal
Eine nordamerikanische Telefonnummer finden
Ziffern mit einer Zeichenklasse finden
Ein Zeichenkürzel verwenden
Beliebige Zeichen finden
Gruppen und Rückwärtsreferenzen
Quantoren einsetzen
Einfassende Literale
Eine Beispielanwendung
Was Sie in Kapitel 1 gelernt haben
Technische Hinweise
2. Einfache Muster finden
Stringliterale finden
Ziffern finden
Etwas anderes als Ziffern finden
Wort- und Nicht-Wortzeichen finden
Whitespace finden
Beliebige Zeichen finden – Zweite Runde
Text mit Markup versehen
Text mit sed mit Markup versehen
Markup mit Perl einfügen
Was Sie in Kapitel 2 gelernt haben
Technische Hinweise
3. Grenzen
Anfang und Ende einer Zeile
Wort- und Nicht-Wortgrenzen
Andere Anker
Eine Gruppe von Zeichen als Literale markieren
Tags hinzufügen
Tags mit sed hinzufügen
Tags mit Perl hinzufügen
Was Sie in Kapitel 3 gelernt haben
Technische Hinweise
4. Alternation, Gruppen und Rückwärtsverweise
Alternation
Untermuster
Einfangende Gruppen und Rückwärtsverweise
Benannte Gruppen
Nicht-einfangende Gruppen
Atomare Gruppen
Was Sie in Kapitel 4 gelernt haben
Technische Hinweise
5. Zeichenklassen
Negierte Zeichenklassen
Vereinigung und Differenz
POSIX-Zeichenklassen
Was Sie in Kapitel 5 gelernt haben
Technische Hinweise
6. Unicode- und andere Zeichen finden
Ein Unicode-Zeichen finden
Einsatz von vim
Zeichen mit Oktalzahlen finden
Eigenschaften von Unicodezeichen finden
Steuerzeichen finden
Was Sie in Kapitel 6 gelernt haben
Technische Hinweise
7. Quantoren
Gierig, genügsam und possessiv
Mit *, + und ? finden
Eine bestimmte Anzahl finden
Genügsame Quantoren
Possessive Quantoren
Was Sie in Kapitel 7 gelernt haben
Technische Hinweise
8. Lookarounds
Positive Lookaheads
Negative Lookaheads
Positive Lookbehinds
Negative Lookbehinds
Was Sie in Kapitel 8 gelernt haben
Technische Hinweise
9. Ein Dokument mit HTML-Markup versehen
Tags finden
Reinen Text mit sed umformen
Mit sed ersetzen
Römische Zahlen mit sed verarbeiten
Einen bestimmten Absatz mit sed verarbeiten
Die Zeilen des Gedichts mit sed verarbeiten
Tags anfügen
Eine Befehlsdatei bei sed einsetzen
Reinen Text mit Perl umwandeln
Römische Zahlen mit Perl verarbeiten
Einen bestimmten Absatz mit Perl verarbeiten
Die Zeilen des Gedichts mit Perl verarbeiten
Eine Befehlsdatei mit Perl einsetzen
Was Sie in Kapitel 9 gelernt haben
Technische Hinweise
10. Das Ende vom Anfang
Mehr erfahren
Interessante Tools, Implementierungen und Bibliotheken
Perl
PCRE
Ruby (Oniguruma)
Python
RE2
Eine nordamerikanische Telefonnummer finden
Eine E-Mail-Adresse finden
Was Sie in Kapitel 10 gelernt haben
A. Reguläre Ausdrücke – Referenz
Reguläre Ausdrücke in QED
Metazeichen
Zeichenkürzel
Whitespace
Whitespace-Zeichen in Unicode
Steuerzeichen
Zeicheneigenschaften
Schriftsystem-Namen für Zeicheneigenschaften
POSIX-Zeichenklassen
Optionen/Modifikatoren
ASCII-Codetabelle mit Regex
Technische Hinweise
Glossar zu regulären Ausdrücken
Index
Kolophon
Vorwort
Dieses Buch zeigt Ihnen anhand von Beispielen, wie Sie reguläre Ausdrücke schreiben. Ziel ist, das Erlernen von regulären Ausdrücken so einfach wie möglich zu machen. Tatsächlich stellt dieses Buch nahezu jedes Konzept anhand von Beispielen vor, so dass Sie es leicht selbst ausprobieren können.
Reguläre Ausdrücke helfen Ihnen dabei, Muster in Textstrings zu finden. Genauer gesagt, handelt es sich dabei um Textstrings mit einer bestimmten Syntax, die auf Muster in Strings passen – meist aus Dokumenten oder Dateien.
Reguläre Ausdrücke fanden Verbreitung, nachdem der Mathematiker Stephen Kleene sein Buch Introduction to Metamathematics schrieb (New York, Van Nostrand). Es wurde erstmals 1952 veröffentlicht, auch wenn die Konzepte aus den frühen 1940er Jahren stammten. Mit dem Aufkommen des Unix-Betriebssystems hatten die Informatiker bessere Möglichkeiten, es einzusetzen – dank der Arbeit von Brian Kernighan, Dennis Ritchie, Ken Thompson und anderen an den AT&T Bell Labs sowie von Tools wie sed und grep in den frühen 1970er Jahren.
Der erste Einsatz regulärer Ausdrücke, den ich in einem Computerprogramm finden konnte, war im QED-Editor. Der QED – Abkürzung von Quick Editor – war für das Berkeley-Timesharing-System geschrieben worden, das auf dem Scientific Data Systems SDS 940 lief. Im Jahr 1970 dokumentiert, handelte es sich um eine Neuauflage (von Ken Thompson) eines früheren Editors auf dem MIT Compatible-Time-Sharing-System. Hier fand sich eine der ersten praktikablen Implementierungen regulärer Ausdrücke auf einem Computer. (Tabelle A.1 in Anhang A beschreibt die Regex-Features von QED.)
Ich werde eine ganze Reihe von Tools nutzen, um die Beispiele zu demonstrieren. Sie werden sie hoffentlich nützlich und hilfreich finden. Andere Tools habe ich nicht eingesetzt, weil sie nicht einfach auf Ihrem Windows-System zu nutzen sind. Sie können diejenigen überspringen, die Ihnen nicht praktisch genug erscheinen oder die Sie optisch nicht ansprechen. Aber ich empfehle jedem, der ernsthaft im Computerumfeld tätig sein will, reguläre Ausdrücke in einer Unix-basierten Umgebung zu erlernen. Ich arbeite in dieser Umgebung seit 25 Jahren und lerne immer noch jeden Tag etwas Neues.
»Diejenigen, die Unix nicht verstehen, sind dazu verdammt, es neu zu erfinden – nur schlechter.«
Henry Spencer
Einige der Tools, die ich Ihnen zeigen werde, stehen online über einen Webbrowser zur Verfügung. Das dürfte für die meisten Leser am einfachsten sein. Andere nutzen Sie von der Befehlszeile aus und ein paar laufen auf dem Desktop. Die Tools lassen sich leicht herunterladen, wenn Sie sie noch nicht besitzen. Der Großteil davon ist kostenlos oder sehr günstig.
Dieses Buch kümmert sich nicht allzu sehr um Begrifflichkeiten. Ich werde Ihnen bei Bedarf die notwendigen Begriffe erklären, aber nur in kleinen Dosen. Ich habe diesen Weg gewählt, weil ich im Laufe der Jahre festgestellt habe, dass Fachbegriffe häufig zu Verständnisproblemen führen. Mit anderen Worten: Ich werde Sie möglichst nicht mit dem trockenen Fachvokabular behelligen, das reguläre Ausdrücke beschreibt. Denn die Idee dieses Buches ist, dass man nützliche Dinge schon erledigen kann, bevor man alles über ein bestimmtes Thema weiß.
Es gibt viele verschiedene Implementierungen regulärer Ausdrücke. Sie finden sie in Unix-Befehlszeilentools wie vi (vim), grep und sed. Es gibt reguläre Ausdrücke in Programmiersprachen wie Perl (natürlich), Java, JavaScript, C# oder Ruby und vielen weiteren, und sie finden sich in deklarativen Sprachen wie XSLT 2.0. Auch gibt es sie in Anwendungen wie Notepad++, Oxygen oder TextMate.
Die meisten dieser Implementierungen haben Gemeinsamkeiten und Unterschiede. Ich werde in diesem Buch nicht auf alle Unterschiede eingehen, aber die wichtigsten werden erwähnt. Wenn ich versuchen würde, alle Unterschiede zwischen allen Implementierungen zu dokumentieren, müsste ich mich danach vermutlich einweisen lassen. In diesem Buch werde ich auf diese Art von Details nicht allzu sehr eingehen. Sie erwarten wie angekündigt eine Einführung in das Thema – und die erhalten Sie auch.
Wer dieses Buch lesen sollte
Zielgruppe dieses Buchs sind Leute, die noch nie zuvor einen regulären Ausdruck geschrieben haben. Kennen Sie sich mit regulären Ausdrücken oder der Programmierung noch nicht aus, ist dieses Buch ein guter Ausgangspunkt. Mit anderen Worten: Ich schreibe für den Leser, der schon von regulären Ausdrücken gehört hat und interessiert daran ist, aber der sie noch nicht versteht. Wenn Sie sich in dieser Beschreibung wiederfinden, ist dieses Buch für Sie genau richtig.
Wir gehen Schritt für Schritt vor und bewegen uns von einfachen hin zu komplexen Themen.
Haben Sie schon ein wenig über reguläre Ausdrücke und ihren Einsatz gelernt oder sind Sie ein erfahrener Programmierer, ist dieses Buch vielleicht nicht unbedingt der richtige Einstiegspunkt für Sie. Es handelt sich um Einsteigerbuch, bei dem dem Leser ein wenig die Hand gehalten werden soll. Haben Sie schon reguläre Ausdrücke geschrieben und sind vertraut mit ihnen, kann auch Ihnen dieses Buch eine Hilfe sein, aber ich werde vermutlich langsamer vorgehen, als Sie sich das wünschen.
Ich empfehle als Folgeliteratur eine Reihe von Büchern. Schauen Sie sich als erstes Reguläre Ausdrücke, 3. Auflage von Jeff Friedl an (siehe http://www.oreilly.de/catalog/regex3ger). Friedls Buch behandelt die regulären Ausdrücke sehr umfassend und ich empfehle es sehr. Auch möchte ich Ihnen das Reguläre Ausdrücke Kochbuch (siehe http://www.oreilly.de/catalog/regexcbger) von Jan Goyvaerts und Steven Levithan ans Herz legen. Jan Goyvaerts ist der Entwickler von RegexBuddy, einer leistungsfähigen Desktopanwendung (siehe http://www.regexbuddy.com/). Steven Levithan hat RegexPal geschrieben, einen Online-Prozessor für reguläre Ausdrücke, den Sie im ersten Kapitel dieses Buches einsetzen werden (siehe http://www.regexpal.com).
Was Sie für dieses Buch benötigen
Um dieses Buch möglichst sinnvoll einsetzen zu können, benötigen Sie Zugriff auf Tools, die auf Unix- oder Linux-Betriebssystemen bereitstehen, wie zum Beispiel Darwin auf dem Mac, einer Variante von BSD (Berkeley Software Distribution) auf dem Mac, oder Cygwin auf einem Windows PC, das in seiner Distribution viele GNU-Tools mitbringt (siehe http://www.cygwin.com und http://www.gnu.org).
Es gibt viele Beispiele, die Sie ausprobieren können. Wenn Sie wollen, schauen Sie sie sich nur an, aber um richtig etwas daraus zu lernen, müssen Sie soviele wie möglich selbst nutzen. Denn meiner Meinung nach lernt man am besten, indem man mitmacht und nicht, indem man nur zuschaut. Sie lernen Websites kennen, auf denen Sie durch farbliche Hervorhebungen erkennen, welche Textabschnitte erkannt wurden. Ich stelle Ihnen Befehlszeilen-Tools aus der Unix-Welt und Desktop-Anwendungen vor, die reguläre Ausdrücke analysieren oder sie einsetzen, um Texte zu durchsuchen.
Sie werden Beispiele aus diesem Buch auf Github unter https://github.com/michaeljamesfitzgerald/Introducing-Regular-Expressions finden. Eine Zusammenstellung all der Beispiele und Testdateien aus diesem Buch finden Sie zum Herunterladen auch unter http://examples.oreilly.com/9781449392680/examples.zip. Es wäre am besten, Sie erstellen ein Verzeichnis auf Ihrem Computer und laden dann diese Dateien in den Ordner herunter, bevor Sie richtig in das Buch einsteigen.
Typographische Konventionen
In diesem Buch werden die folgenden typographischen Konventionen befolgt:
Kursiv
Steht für neue Begriffe, URLs, E-Mail-Adressen, Dateinamen, Dateierweiterungen und so weiter.
Nichtproportionalschrift
Wird für Programmcode (auch innerhalb von Absätzen) genutzt, um auf Programmelemente wie Ausdrücke und Befehlszeilen oder andere Elemente zu verweisen.
Tipp
Dieses Symbol steht für einen Tipp, einen Vorschlag oder eine allgemeine Anmerkung.
Danksagung
Erneut möchte ich mich bei meinem Lektor Simon St. Laurent bei O'Reilly bedanken, einem sehr geduldigen Menschen, ohne den dieses Buch nie das Licht der Welt erblickt hätte. Danke sehr auch an Seara Patterson Coburn