Reguläre Ausdrücke (eBook)
557 Seiten
O'Reilly Verlag
978-3-89721-790-4 (ISBN)
Jeffrey E. F. Friedl ist auf dem Land, in Rootstown, Ohio, aufgewachsen und wollte eigentlich Astronom werden, bis er in einer Ecke des Chemielabors einen unbenutzten TRS-80 Model I entdeckte (mit vollen 16KB RAM, immerhin). 1980 entdeckte er Unix und damit die regulären Ausdrücke. Nach Abschlüssen in Computer Science (Informatik) an der Kent State University (B. S.) und der University of New Hampshire (M. S.) arbeitete er als Ingenieur bei der Omron Corporation, Kyoto, Japan. 1997 zog es ihn ins Silicon Valley, wo er sein Regex-Know-how für die Finanz-Nachrichten einer kaum bekannten Firma namens Yahoo! einsetzt. 2004 kehrte er mit Frau und Sohn anch Kyoto zurück. Wenn es um das schwierige Problem geht, was er mit all seiner freien Zeit anfangen soll, verbringt Jeffrey viel Zeit mit seiner Frau Fumie und dem Energiebündel namens Anthony.
Metazeichen bei egrep
Wir beginnen mit einigen Metazeichen von egrep, um die Möglichkeiten dieses Werkzeugs auszuloten. Ich werde diese nur kurz mit ein paar Beispielen behandeln; die erschöpfende Beschreibung folgt in späteren Kapiteln.
Typografische Konventionen
Vor Beginn stellen Sie bitte sicher, dass Sie die hier verwendeten typografischen Konventionen kennen („Typografische Konventionen“).
Zeilenanfang und Zeilenende
Wahrscheinlich am einfachsten zu verstehen sind die Metazeichen ^ (Zirkumflex) und $ (Dollar), die für den Anfang bzw. das Ende der zu prüfenden Zeile stehen. Wie wir gesehen haben, findet der reguläre Ausdrück ding die Zeichen d?i?n?g irgendwo auf der Zeile, aber ^ding findet die Zeichen d?i?n?g nur dann, wenn sie am Anfang der Zeile stehen. Analog passt der reguläre Ausdrück ding$ nur am Ende der Zeile, wenn zum Beispiel eine Zeile mit Unding endet. Weil Zirkumflex und Dollar den regulären Ausdrück am Anfang oder am Ende der Zeile festmachen, nennt man sie Zeilenanker oder einfach Anker.
Machen Sie es sich zur Gewohnheit, reguläre Ausdrücke in einem wörtlichen Sinn zu interpretieren. Lesen Sie nicht:
^ding passt auf eine Zeile mit ding am Anfang |
sondern eher:
^ding passt auf einen Zeilenanfang, unmittelbar gefolgt von d, unmittelbar gefolgt von i, unmittelbar gefolgt von n, unmittelbar gefolgt von g. |
Das kommt zwar auf dasselbe heraus, aber die wörtliche Lesart erlaubt es, einen neuen Ausdruck besser zu verstehen. Wie würde egrep ^ding$, ^$ oder ganz einfach ^ allein interpretieren? Für die Auflösung bitte umblättern.
Der Zirkumflex und das Dollarzeichen sind insofern speziell, als sie eine Position in der Zeile beschreiben und nicht ein Zeichen selbst. Es gibt natürlich einige Möglichkeiten, um auf wirkliche Zeichen in der Zeile zu prüfen. Neben Literalen, die für das Zeichen selbst stehen, gibt es einige andere Metazeichen, die in den nächsten Abschnitten behandelt werden.
Zeichenklassen
Eines von mehreren Zeichen erkennen
Nehmen wir an, Sie wollen nach dem String »Birma« suchen, aber auch »Burma«[4] zulassen. Die Konstruktion [...], meist Zeichenklasse genannt, ermöglicht es, eine Liste von Zeichen anzugeben, nach denen gesucht werden soll. Ein i passt nur auf ein i, ein u nur auf ein u, ein iu aber auf beide. Der reguläre Ausdruck B[iu]rma bedeutet also wörtlich: Suche nach B, gefolgt von einem i oder einem u, gefolgt von r, einem m und danach einem a. Ich bin ziemlich schlecht in der Rechtschreibung, daher benutze ich oft reguläre Ausdrücke, um Wörter zu finden, die ich immer wieder falsch schreibe. Einer meiner häufigen Fehler ist sep[ea]r[ea]te, weil ich mich nie daran erinnern kann, ob das Wort nun »seperate«, »separate«, »separete« oder wie auch immer geschrieben wird.
Beachten Sie, dass zwischen den Zeichen außerhalb der Zeichenklasse (hier r, m und a im vollständigen Ausdruck B[iu]rma) ein Nacheinander oder ein »und dann« impliziert wird – zunächst ein r und dann ein m und dann ein a. Ganz anders innerhalb der Zeichenklasse: Dort spielt die Reihenfolge überhaupt keine Rolle, es geht dort um ein oder.
Oder vielleicht wollen Sie die Groß- oder Kleinschreibung eines Wortes zulassen: [Rr]ot. Das passt noch immer auch auf Zeilen, bei denen der String rot oder Rot als Teil eines Wortes vorkommt, etwa in Protest. Ich reite etwas auf diesem Punkt herum, weil meine Erfahrung zeigt, dass dies bei Neulingen ein Stolperstein ist. Wenn wir ein paar weitere Metazeichen kennen, werde ich erneut darauf zurückkommen.
Die Liste in den eckigen Klammern kann beliebig viele Zeichen enthalten. Zum Beispiel erkennt [123456] irgendeine der angegebenen Ziffern. Diese Zeichenklasse kann als Teil von <H[123456]> (erkennt <H1>, <H2>, <H3> usw.) nützlich sein, wenn es darum geht, HTML-Tags zu prüfen.
Innerhalb einer Zeichenklasse gibt das Zeichenklassen-Metazeichen ›-‹ (Bindestrich) einen Bereich von Zeichen an: <H[1-6]> bedeutet exakt dasselbe wie das vorherige Beispiel. [0-9] und [a-z] sind übliche Abkürzungen für Ziffern bzw. Kleinbuchstaben. Mehrfache Bereiche sind zugelassen. [0123456789abcdefABCDEF] kann also kürzer so geschrieben werden: [0-9a-fA-F] (oder auch [A-Fa-f0-9], die Reihenfolge der Bereiche spielt keine Rolle). Diese drei Bereiche werden oft gebraucht, wenn man mit hexadezimalen Zahlen arbeitet. Bereiche können auch mit Literalen kombiniert werden: [0-9A-Z_!.?] passt auf Ziffern, Großbuchstaben, den Unterstrich, Ausrufezeichen, Punkt oder Fragezeichen.
Beachten Sie, dass der Bindestrich nur innerhalb einer Zeichenklasse ein Metazeichen ist – außerhalb dieser ist er ein normaler Bindestrich. Sogar innerhalb einer Zeichenklasse ist er nicht immer ein Metazeichen. Falls der Bindestrich das erste Zeichen innerhalb der Klasse ist, kann er ja schlecht einen Bereich angeben; er wird dann als Literal behandelt. Ganz ähnlich sind das Fragezeichen und der Punkt in einem regulären Ausdruck normalerweise Metazeichen, aber nicht innerhalb einer Zeichenklasse! Um das ganz klarzumachen: Nur die zwei Bindestriche in [0-9A-Z_!.?] sind Metazeichen.
| Zeichenklassen haben ihre eigene Miniatur-Sprache. Die Regeln, welche Zeichen als Metazeichen gelten (und was deren Funktion ist), sind inner- und außerhalb von Zeichenklassen verschieden. |
Weitere Beispiele dazu folgen in Kürze.
Negierte Zeichenklassen
Wenn man [^...] statt [...] benutzt, passt die Klasse auf alle Zeichen, die nicht unter den angegebenen Zeichen sind. Zum Beispiel erkennt [^1-6] alle Zeichen außer 1 bis 6. Der Zirkumflex als erstes Zeichen in der Klasse »negiert« also die Liste – statt alle erwünschten Zeichen aufzulisten, gibt man die unerwünschten an.
Sicher ist Ihnen aufgefallen, dass das Zeichen ^ derselbe...
| Erscheint lt. Verlag | 15.4.2009 |
|---|---|
| Verlagsort | Heidelberg |
| Sprache | deutsch |
| Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
| Mathematik / Informatik ► Informatik ► Software Entwicklung | |
| Schlagworte | Perl • regex • Reguläre Ausdrücke • Regular Expressions |
| ISBN-10 | 3-89721-790-2 / 3897217902 |
| ISBN-13 | 978-3-89721-790-4 / 9783897217904 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
Größe: 4,0 MB
Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopierschutz. Eine Weitergabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persönlichen Nutzung erwerben.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschrä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.
Größe: 2,1 MB
Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopierschutz. Eine Weitergabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persönlichen Nutzung erwerben.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegerä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.
aus dem Bereich