Sie sind hier
E-Book

Einstieg in Reguläre Ausdrücke

AutorMichael Fitzgerald
VerlagO'Reilly Verlag
Erscheinungsjahr2012
Seitenanzahl156 Seiten
ISBN9783868999419
FormatPDF/ePUB
Kopierschutzkein Kopierschutz/DRM
GerätePC/MAC/eReader/Tablet
Preis13,99 EUR
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'.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

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...

Blick ins Buch

Weitere E-Books zum Thema: Software-Design - Softwareentwicklung

Software Engineering

E-Book Software Engineering
Architektur-Design und Prozessorientierung Format: PDF

Das Lehrbuch behandelt alle Aspekte der Software-Entwicklung, besonders aber Methoden und Richtlinien zur Herstellung großer und qualitativ hochwertiger Softwareprodukte. Es vermittelt das zur…

Software Engineering

E-Book Software Engineering
Architektur-Design und Prozessorientierung Format: PDF

Das Lehrbuch behandelt alle Aspekte der Software-Entwicklung, besonders aber Methoden und Richtlinien zur Herstellung großer und qualitativ hochwertiger Softwareprodukte. Es vermittelt das zur…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

Weitere Zeitschriften

Atalanta

Atalanta

Atalanta ist die Zeitschrift der Deutschen Forschungszentrale für Schmetterlingswanderung. Im Atalanta-Magazin werden Themen behandelt wie Wanderfalterforschung, Systematik, Taxonomie und Ökologie. ...

aufstieg

aufstieg

Zeitschrift der NaturFreunde in Württemberg Die Natur ist unser Lebensraum: Ort für Erholung und Bewegung, zum Erleben und Forschen; sie ist ein schützenswertes Gut. Wir sind aktiv in der Natur ...

care konkret

care konkret

care konkret ist die Wochenzeitung für Entscheider in der Pflege. Ambulant wie stationär. Sie fasst topaktuelle Informationen und Hintergründe aus der Pflegebranche kompakt und kompetent für Sie ...

caritas

caritas

mitteilungen für die Erzdiözese FreiburgUm Kindern aus armen Familien gute Perspektiven für eine eigenständige Lebensführung zu ermöglichen, muss die Kinderarmut in Deutschland nachhaltig ...

Computerwoche

Computerwoche

Die COMPUTERWOCHE berichtet schnell und detailliert über alle Belange der Informations- und Kommunikationstechnik in Unternehmen – über Trends, neue Technologien, Produkte und Märkte. IT-Manager ...

DER PRAKTIKER

DER PRAKTIKER

Technische Fachzeitschrift aus der Praxis für die Praxis in allen Bereichen des Handwerks und der Industrie. “der praktiker“ ist die Fachzeitschrift für alle Bereiche der fügetechnischen ...

Der Steuerzahler

Der Steuerzahler

Der Steuerzahler ist das monatliche Wirtschafts- und Mitgliedermagazin des Bundes der Steuerzahler und erreicht mit fast 230.000 Abonnenten einen weitesten Leserkreis von 1 ...

filmdienst#de

filmdienst#de

filmdienst.de führt die Tradition der 1947 gegründeten Zeitschrift FILMDIENST im digitalen Zeitalter fort. Wir begleiten seit 1947 Filme in allen ihren Ausprägungen und Erscheinungsformen.  ...