Um unsere Webseiten für Sie optimal zu gestalten und fortlaufend zu verbessern, verwenden wir Cookies. Durch Bestätigen des Buttons »Akzeptieren« stimmen Sie der Verwendung zu. Über den Button »Einstellungen« können Sie auswählen, welche Cookies Sie zulassen wollen.

AkzeptierenEinstellungen

Einstieg in Reguläre Ausdrücke (eBook)

eBook Download: PDF | EPUB
2012 | 1. Auflage
156 Seiten
O'Reilly Verlag
978-3-86899-941-9 (ISBN)
Systemvoraussetzungen
Systemvoraussetzungen
19,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Wenn Sie ein Programmierer sind, der mit regulären Ausdrücken noch nicht vertraut ist, finden Sie in diesem Buch einen sehr guten Einstieg. Schritt für Schritt lernen Sie die Grundlagen anhand vieler Beispiele. Sie erfahren, wie Sie Text finden, extrahieren und umwandeln, indem Sie bestimmte Wörter, Zeichen oder Muster suchen. 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 beschreibt Ruby als 'meine bisherige Lieblingssprache'. Er arbeitet regelmäßig mit Ruby und dem Rails Framework. Er hat über 150 Ruby-Programme zum Testen und Vorführen geschrieben und eine Bibliothek mit Beispiel-Ruby-Code entwickelt. Er ist der Autor von 'Learning XSLT' und 'XML Hacks' sowie Koautor von 'XML kurz & gut'.

Michael Fitzgerald beschreibt Ruby als "meine bisherige Lieblingssprache". Er arbeitet regelmäßig mit Ruby und dem Rails Framework. Er hat über 150 Ruby-Programme zum Testen und Vorführen geschrieben und eine Bibliothek mit Beispiel-Ruby-Code entwickelt. Er ist der Autor von "Learning XSLT" und "XML Hacks" sowie Koautor von "XML kurz & gut".

Einstieg in Reguläre Ausdrücke 3
Inhalt 5
Vorwort 9
Wer dieses Buch lesen sollte 10
Was Sie für dieses Buch benötigen 11
Typographische Konventionen 11
Danksagung 12
Kapitel 1 – Was ist ein regulärer Ausdruck? 13
Ein Anfang mit Regexpal 14
Eine nordamerikanische Telefonnummer finden 15
Ziffern mit einer Zeichenklasse finden 16
Ein Zeichenkürzel verwenden 17
Beliebige Zeichen finden 17
Gruppen und Rückwärtsreferenzen 18
Quantoren einsetzen 19
Einfassende Literale 20
Eine Beispielanwendung 21
Was Sie in Kapitel 1 gelernt haben 23
Technische Hinweise 23
Kapitel 2 – Einfache Muster finden 25
Stringliterale finden 27
Ziffern finden 27
Etwas anderes als Ziffern finden 29
Wort- und Nicht-Wortzeichen finden 30
Whitespace finden 32
Beliebige Zeichen finden & ndash
Text mit Markup versehen 36
Text mit sed mit Markup versehen 36
Markup mit Perl einfügen 37
Was Sie in Kapitel 2 gelernt haben 39
Technische Hinweise 39
Kapitel 3 – Grenzen 41
Anfang und Ende einer Zeile 41
Wort- und Nicht-Wortgrenzen 43
Andere Anker 45
Eine Gruppe von Zeichen als Literale markieren 46
Tags hinzufügen 47
Tags mit sed hinzufügen 48
Tags mit Perl hinzufügen 49
Was Sie in Kapitel 3 gelernt haben 50
Technische Hinweise 50
Kapitel 4 – Alternation, Gruppen und Rückwärtsverweise 53
Alternation 53
Untermuster 57
Einfangende Gruppen und Rückwärtsverweise 58
Benannte Gruppen 60
Nicht-einfangende Gruppen 61
Atomare Gruppen 62
Was Sie in Kapitel 4 gelernt haben 62
Technische Hinweise 63
Kapitel 5 – Zeichenklassen 65
Negierte Zeichenklassen 67
Vereinigung und Differenz 68
POSIX-Zeichenklassen 70
Was Sie in Kapitel 5 gelernt haben 71
Technische Hinweise 72
Kapitel 6 – Unicode- und andere Zeichen finden 73
Ein Unicode-Zeichen finden 74
Einsatz von vim 75
Zeichen mit Oktalzahlen finden 77
Eigenschaften von Unicodezeichen finden 77
Steuerzeichen finden 80
Was Sie in Kapitel 6 gelernt haben 82
Technische Hinweise 83
Kapitel 7 – Quantoren 85
Gierig, genügsam und possessiv 86
Mit *, + und ? finden 86
Eine bestimmte Anzahl finden 87
Genügsame Quantoren 89
Possessive Quantoren 90
Was Sie in Kapitel 7 gelernt haben 91
Technische Hinweise 91
Kapitel 8 – Lookarounds 93
Positive Lookaheads 93
Negative Lookaheads 96
Positive Lookbehinds 97
Negative Lookbehinds 97
Was Sie in Kapitel 8 gelernt haben 98
Technische Hinweise 98
Kapitel 9 – Ein Dokument mit HTML-Markup versehen 99
Tags finden 99
Reinen Text mit sed umformen 100
Mit sed ersetzen 101
Römische Zahlen mit sed verarbeiten 102
Einen bestimmten Absatz mit sed verarbeiten 103
Die Zeilen des Gedichts mit sed verarbeiten 103
Tags anfügen 104
Eine Befehlsdatei bei sed einsetzen 104
Reinen Text mit Perl umwandeln 106
Römische Zahlen mit Perl verarbeiten 107
Einen bestimmten Absatz mit Perl verarbeiten 108
Die Zeilen des Gedichts mit Perl verarbeiten 108
Eine Befehlsdatei mit Perl einsetzen 109
Was Sie in Kapitel 9 gelernt haben 110
Technische Hinweise 110
Kapitel 10 – Das Ende vom Anfang 113
Mehr erfahren 115
Interessante Tools, Implementierungen und Bibliotheken 115
Perl 115
PCRE 116
Ruby (Oniguruma) 116
Python 117
RE2 117
Eine nordamerikanische Telefonnummer finden 117
Eine E-Mail-Adresse finden 118
Was Sie in Kapitel 10 gelernt haben 119
Anhang – Reguläre Ausdrücke - Referenz 121
Glossar zu regulären Ausdrücken 135
Index 139

Reguläre Ausdrücke sind speziell kodierte Strings, die als Muster zum Finden von Strings genutzt werden. Sie tauchten zuerst in den 1940er Jahren als Möglichkeit zum Beschreiben regulärer Sprachen auf, ließen sich in der Programmier-Welt aber erst in den 1970er Jahren richtig blicken. Ich fand sie das erste Mal im QED-Texteditor, der von Ken Thompson geschrieben worden war.

»Ein regulärer Ausdruck ist ein Muster, das eine Reihe von Zeichenketten festlegt; es ist zum Finden von bestimmten Strings gedacht.« – Ken Thompson

Reguläre Ausdrücke wurden später ein wichtiger Bestandteil der aus dem Unix-Betriebssystem erwachsenden Toolsuite – die Editoren ed, sed und vi (vim), grep, AWK und andere. Aber die Art und Weise, wie reguläre Ausdrücke implementiert wurden, ist leider nicht so regulär.

Reguläre Ausdrücke haben den Ruf, sehr unleserlich zu sein, aber das hängt nur davon ab, wie Sie sie angehen. Es gibt eine natürliche Entwicklung von so etwas Einfachem wie

d

als Zeichenkürzel, das zu jeder Ziffer zwischen 0 und 9 passt, bis hin zu etwas komplizierteren Dingen wie

^((d{3})|^d{3}[.-]?)?d{3}[.-]?d{4}$

wo wir am Ende des Kapitels landen werden: einem ziemlich robusten regulären Ausdruck, der zur einer zehnstelligen nordamerikanischen Telefonnummer passt – mit oder ohne Klammern um den Area Code, mit oder ohne Bindestriche und Punkte, um die Nummer aufzuteilen. (Die Klammern müssen zudem immer »ausbalanciert« sein, zu jeder öffnenden Klammer muss es auch eine schließende Klammer geben.)

Wenn Ihnen nicht klar ist, wie das alles funktioniert, machen Sie sich keine Sorgen: Ich werde den gesamten Ausdruck in diesem Kapitel nach und nach erläutern. Wenn Sie nur den Beispielen (möglichst im gesamten Buch) folgen, wird Ihnen das Schreiben regulärer Ausdrücke bald ganz locker von der Hand gehen. Sind Sie bereit, in diese neue Welt aufzubrechen?

Gelegentlich stelle ich Unicode-Zeichen in diesem Buch über ihren Codepoint dar – eine vierstellige, hexadezimale (zur Basis 16) Zahl. Diese Codepoints haben die Form U+0000. U+002E ist zum Beispiel der Codepoint für einen Punkt (.).

Sie erkennen Sie vermutlich nicht, aber es ist die Telefonnummer von O'Reilly Media in Sebastopol in Kalifornien.

Lassen Sie uns diese Nummer mit einem regulären Ausdruck finden. Es gibt viele Möglichkeiten, das zu erreichen, aber als Einstieg geben Sie einfach die gleiche Nummer im oberen Bereich ein – so, wie sie im unteren Feld steht:

707-827-7019

Nun sollte die eingegebene Nummer im unteren Feld komplett in Gelb hervorgehoben werden (siehe Abbildung 1.2). Wenn das bei Ihnen auch der Fall ist, sind Sie im Geschäft!

Sie haben in diesem regulären Ausdruck ein Stringliteral verwendet, um einen String im Zieltext zu finden. Ein Stringliteral ist eine buchstabengetreue Darstellung eines Strings.

Jetzt löschen Sie die Nummer im oberen Feld und ersetzen sie durch die einzelne Ziffer 7. Haben Sie gesehen, was gerade passiert ist? Nur die Siebenen sind jetzt hervorgehoben. Der Buchstabe (beziehungsweise die Ziffer) 7 als regulärer Ausdruck findet die vier Vorkommen der Ziffer 7 im Zieltext.

Abbildung 1.2 Zehnstellige Telefonnummer, in Regexpal hervorgehoben

Alle Nummern (genauer gesagt, alle Ziffern) im unteren Feld werden hervorgehoben, abwechselnd in Gelb und Blau. Der reguläre Ausdruck [0-9] weist nämlich den Regex-Prozessor an: »Finde jede Ziffer im Bereich von 0 bis 9.«

Die eckigen Klammern werden nicht als solche gefunden, weil sie als Metazeichen genutzt werden. Ein Metazeichen hat in regulären Ausdrücken eine besondere Bedeutung und ist reserviert. Ein regulärer Ausdruck der Form [0-9] wird als Zeichenklasse (Character Class) oder manchmal auch als Zeichenmenge (Character Set) bezeichnet.

Sie können die zu findenden Ziffern weiter einschränken, indem Sie sie einzeln in der Zeichenklasse angeben, zum Beispiel:

[012789]

Damit werden nur die angegebenen Ziffern gefunden, hier also 0, 1, 2, 7, 8 und 9. Geben Sie diesen Ausdruck einmal im oberen Feld ein. Erneut wird jede Ziffer im unteren Feld abwechselnd in Gelb und Blau hervorgehoben.

Um beliebige zehnstellige nordamerikanische Telefonnummern zu finden, deren Teile durch Bindestriche voneinander getrennt sind, könnten Sie folgenden Ausdruck eingeben:

[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]

Das funktioniert, ist aber ganz schön lang. Es gibt eine bessere Möglichkeit, nämlich den Einsatz eines Zeichenkürzels.

Durch ein drei- oder vierfaches Wiederholen von d werden genau drei beziehungsweise vier aufeinanderfolgende Ziffern gefunden. Der Bindestrich im obigen regulären Ausdruck wird als Literal eingegeben und auch genauso gefunden.

Wie finden wir diesen Bindestrich am besten? Sie können einen literalen Bindestrich (-) wie eben genutzt einsetzen, oder Sie verwenden ein maskiertes großes D (D), womit jedes Zeichen gefunden wird, das keine Ziffer ist.

Dieses Beispiel nutzt D statt des literalen Bindestrichs:

dddDdddDdddd

Erneut sollte die gesamte Telefonnummer, einschließlich der Bindestriche, hervorgehoben werden.

Der Punkt dient als Wildcard und findet jedes Zeichen (außer in manchen Situationen ein Zeilenende). Im obigen Beispiel passt der reguläre Ausdruck auf die Bindestriche, aber es könnte hier auch ein Prozentzeichen (%) stehen:

707%827%7019

Oder ein vertikaler Balken (|):

707|827|7019

Oder irgendein anderes Zeichen.

Die 1 bezieht sich auf das, was in der durch Klammern umschlossenen Gruppe gefunden wurde . Als Ergebnis wird dieser Ausdruck die Vorwahl 707 finden. Schlüsseln wir einmal die einzelnen Elemente auf:

  • (d) passt auf die erste Ziffer, die damit auch eingefangen wird (die Ziffer 7)

  • d passt auf die nächste Ziffer (die 0), fängt sie aber nicht ein, weil sie nicht in Klammern steht

  • 1 verweist auf die eingefangene Ziffer (die 7)

Damit wird nur die Vorwahl gefunden. Machen Sie sich keine Sorgen, wenn Sie das Ganze jetzt noch nicht vollständig verstehen. Sie werde im Buch noch viele Beispiele mit Gruppen finden.

Sie könnten nun die gesamte Telefonnummer mit einer Gruppe und einer Reihe von Rückwärtsreferenzen finden:

(d)01Ddd1D1ddd

Aber das ist nicht so elegant, wie es sein könnte. Lassen Sie uns etwas ausprobieren, was noch besser funktioniert.

Die Zahlen in geschweiften Klammern weisen den Regex-Prozessor an, genau so viele Vorkommen dieser Ziffern zu finden, nach denen Sie suchen. Die geschweiften Klammern mit einer Zahl sind eine Form von Quantoren. Die geschweiften Klammern selbst zählen zu den Metazeichen.

Das Fragezeichen (?) ist eine andere Form eines Quantors. Es folgt auf den Bindestrich im regulären Ausdruck und bedeutet, dass der Bindestrich optional ist – er kann also null- oder einmal vorkommen (»One or None«). Es gibt noch andere Quantoren wie zum Beispiel das Pluszeichen (+), das für »einmal oder häufiger« steht, oder der Asterisk (*) für »nullmal oder häufiger«.

Mit Quantoren können Sie einen regulären Ausdruck viel knapper halten:

(d{3,4}[.-]?)+

Das Pluszeichen bedeutet hier, dass das vorige Element einmal oder häufiger vorkommen kann. Dieser reguläre Ausdruck findet entweder drei oder vier Ziffern, gefolgt von einem optionalen Bindestrich oder Punkt. Das Ganze ist durch Klammern zu einer Gruppe zusammengefasst, die durch das Pluszeichen (+) einmal oder häufiger gefunden werden kann.

Raucht Ihnen der Kopf? Ich hoffe nicht. Hier eine Zeichen-für-Zeichen-Analyse dieses Ausdrucks:

  • ( öffnet eine einfangende Gruppe

  • beginnt ein Zeichenkürzel (es maskiert das folgende...

Erscheint lt. Verlag 17.12.2012
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Software Entwicklung
Schlagworte Muster • Programmierung • regex • Textmanipulation • Textmuster
ISBN-10 3-86899-941-8 / 3868999418
ISBN-13 978-3-86899-941-9 / 9783868999419
Informationen gemäß Produktsicherheitsverordnung (GPSR)
Haben Sie eine Frage zum Produkt?
PDFPDF (Ohne DRM)
Größe: 6,6 MB

Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopier­schutz. Eine Weiter­gabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persön­lichen Nutzung erwerben.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

EPUBEPUB (Ohne DRM)
Größe: 2,9 MB

Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopier­schutz. Eine Weiter­gabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persön­lichen Nutzung erwerben.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Das umfassende Handbuch

von Jürgen Sieben

eBook Download (2023)
Rheinwerk Computing (Verlag)
89,90