O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Reguläre Ausdrücke Kochbuch

Book Description

Reguläre Ausdrücke sind ein leistungsstarkes Mittel zur Verarbeitung von Texten und Daten. Sie sind eine Schatzkiste für kreatives Programmieren und elegante Lösungen und sind mittlerweile standardmäßig in vielen Sprachen und Werkzeugen integriert. Wenn Sie sie bisher noch nicht eingesetzt haben, wird Ihnen dieses Buch eine ganz neue Welt eröffnen. Aufgrund der ausgesprochen gründlichen und detaillierten Behandlung des Themas ist dieses Buch aber auch für Experten eine wahre Trouvaille. Die neue Auflage dieses anerkannten Standardwerks wurde vollständig überarbeitet und behandelt jetzt auch die Unterstützung regulärer Ausdrücke in PHP sowie Suns java.util.regex.

Table of Contents

  1. Reguläre Ausdrücke Kochbuch
  2. Vorwort
    1. Gefangen im Gewirr der verschiedenen Versionen
    2. Für wen dieses Buch gedacht ist
    3. Behandelte Technologien
    4. Aufbau des Buchs
    5. Konventionen in diesem Buch
    6. Die Codebeispiele verwenden
    7. Danksagung
  3. 1. Einführung in reguläre Ausdrücke
    1. Definition regulärer Ausdrücke
      1. Viele Varianten regulärer Ausdrücke
      2. Regex-Varianten in diesem Buch
    2. Suchen und Ersetzen mit regulären Ausdrücken
      1. Viele Varianten des Ersetzungstexts
    3. Tools für das Arbeiten mit regulären Ausdrücken
      1. RegexBuddy
      2. RegexPal
      3. Weitere Onlinetools für Regexes
        1. regex.larsolavtorvik.com
        2. Nregex
        3. Rubular
        4. myregexp.com
        5. reAnimator
      4. Weitere Desktop-Tools für das Arbeiten mit regulären Ausdrücken
        1. Expresso
        2. The Regulator
      5. grep
        1. PowerGREP
        2. Windows Grep
        3. RegexRenamer
      6. Beliebte Texteditoren
  4. 2. Grundlagen regulärer Ausdrücke
    1. 2.1 Literalen Text finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
        1. Blockmaskierung
        2. Übereinstimmungen unabhängig von Groß- und Kleinschreibung
      5. Siehe auch
    2. 2.2 Nicht druckbare Zeichen finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen zur Repräsentation nicht druckbarer Zeichen
        1. Die 26 Steuerzeichen
        2. Der 7-Bit-Zeichensatz
      5. Siehe auch
    3. 2.3 Ein oder mehrere Zeichen finden
      1. Problem
      2. Lösung
        1. Kalender mit Schreibfehlern
        2. Hexadezimales Zeichen
        3. Nicht hexadezimales Zeichen
      3. Diskussion
      4. Variationen
        1. Abkürzungen
        2. Groß- und Kleinschreibung ignorieren
      5. Variantenspezifische Features
        1. Zeichenklassendifferenz in .NET
        2. Zeichenklassenvereinigung, -differenz und -schnittmenge in Java
      6. Siehe auch
    4. 2.4 Ein beliebiges Zeichen finden
      1. Problem
      2. Lösung
        1. Jedes Zeichen mit Ausnahme von Zeilenumbrüchen
        2. Jedes Zeichen einschließlich Zeilenumbrüchen
      3. Diskussion
        1. Jedes Zeichen außer Zeilenumbrüchen
        2. Jedes Zeichen einschließlich Zeilenumbrüchen
        3. Punkt-Missbrauch
      4. Variationen
      5. Siehe auch
    5. 2.5 Etwas am Anfang und/oder Ende einer Zeile finden
      1. Problem
      2. Lösung
        1. Anfang des Texts
        2. Ende des Texts
        3. Zeilenanfang
        4. Zeilenende
      3. Diskussion
        1. Anker und Zeilen
        2. Anfang des Texts
        3. Ende des Texts
        4. Anfang einer Zeile
        5. Ende einer Zeile
        6. Finden von Text ohne Inhalt
      4. Variationen
      5. Siehe auch
    6. 2.6 Ganze Wörter finden
      1. Problem
      2. Lösung
        1. Wortgrenzen
        2. Nicht-Wortgrenzen
      3. Diskussion
        1. Wortgrenzen
        2. Nicht-Wortgrenzen
      4. Wortzeichen
      5. Siehe auch
    7. 2.7 Codepoints, Eigenschaften, Blöcke und Schriftsysteme bei Unicode
      1. Problem
      2. Lösung
        1. Unicode-Codepoint
        2. Unicode-Eigenschaft oder -Kategorie
        3. Unicode-Block
        4. Unicode-Schriftsystem
        5. Unicode-Graphem
      3. Diskussion
        1. Unicode-Codepoint
        2. Unicode-Eigenschaften oder -Kategorien
        3. Unicode-Block
        4. Unicode-Schriftsysteme
        5. Unicode-Graphem
      4. Variationen
        1. Negierte Form
        2. Zeichenklassen
        3. Alle Zeichen auflisten
      5. Siehe auch
    8. 2.8 Eine von mehreren Alternativen finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    9. 2.9 Gruppieren und Einfangen von Teilen des gefundenen Texts
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
        1. Nicht-einfangende Gruppen
        2. Gruppen mit Modus-Modifikatoren
      5. Siehe auch
    10. 2.10 Vorher gefundenen Text erneut finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    11. 2.11 Teile des gefundenen Texts einfangen und benennen
      1. Problem
      2. Lösung
        1. Benannte Captures
        2. Benannte Rückwärtsreferenzen
      3. Diskussion
        1. Benannte Captures
        2. Benannte Rückwärtsreferenzen
      4. Siehe auch
    12. 2.12 Teile der Regex mehrfach wiederholen
      1. Problem
      2. Lösung
        1. Googol
        2. Hexadezimale Zahl
        3. Hexadezimale Zahl mit optionalem Suffix
        4. Gleitkommazahl
      3. Diskussion
        1. Feste Wiederholung
        2. Variable Wiederholung
        3. Unendliche Wiederholung
        4. Etwas optional machen
        5. Wiederholende Gruppen
      4. Siehe auch
    13. 2.13 Minimale oder maximale Wiederholung auswählen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    14. 2.14 Unnötiges Backtracking vermeiden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    15. 2.15 Aus dem Ruder laufende Wiederholungen verhindern
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
      5. Siehe auch
    16. 2.16 Etwas auf Übereinstimmung prüfen, ohne es dem Gesamtergebnis hinzuzufügen
      1. Problem
      2. Lösung
      3. Diskussion
        1. Lookaround
        2. Negatives Lookaround
        3. Unterschiedliche Lookbehind-Ebenen
        4. Den gleichen Text zwei Mal finden
        5. Ein Lookaround ist atomar
      4. Lösung ohne Lookbehind
      5. Siehe auch
    17. 2.17 Abhängig von einer Bedingung eine von zwei Alternativen finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    18. 2.18 Kommentare für einen regulären Ausdruck
      1. Problem
      2. Lösung
      3. Diskussion
        1. Freiform-Modus
        2. Java hat Freiform-Zeichenklassen
      4. Variationen
    19. 2.19 Literalen Text im Ersetzungstext nutzen
      1. Problem
      2. Lösung
      3. Diskussion
        1. Welche Zeichen wo im Ersetzungstext zu maskieren sind
        2. .NET und JavaScript
        3. Java
        4. PHP
        5. Perl
        6. Python und Ruby
        7. Weitere Maskierungsregeln für String-Literale
      4. Siehe auch
    20. 2.20 Einfügen des Suchergebnisses in den Ersetzungstext
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Ersetzungstext
      3. Diskussion
      4. Siehe auch
    21. 2.21 Teile des gefundenen Texts in den Ersetzungstext einfügen
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Ersetzungstext
      3. Diskussion
        1. Verwendung einfangender Gruppen in Ersetzungstexten
        2. $10 und größer
        3. Referenzen auf nicht-existierende Gruppen
      4. Lösung mit benannten Captures
        1. Regulärer Ausdruck
        2. Ersetzungstext
        3. Varianten, die benannte Captures unterstützen
      5. Siehe auch
    22. 2.22 Suchergebniskontext in den Ersetzungstext einfügen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
  5. 3. Mit regulären Ausdrücken programmieren
    1. Programmiersprachen und Regex-Varianten
      1. In diesem Kapitel behandelte Sprachen
      2. Mehr Programmiersprachen
    2. 3.1 Literale reguläre Ausdrücke im Quellcode
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      4. Siehe auch
    3. 3.2 Importieren der Regex-Bibliothek
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. Python
      3. Diskussion
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
    4. 3.3 Erstellen eines Regex-Objekts
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. Perl
        6. Python
        7. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Einen regulären Ausdruck in CIL kompilieren
        1. C#
        2. VB.NET
      5. Diskussion
      6. Siehe auch
    5. 3.4 Optionen für reguläre Ausdrücke setzen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Weitere sprachspezifische Optionen
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      5. Siehe auch
    6. 3.5 Auf eine Übereinstimmung in einem Text prüfen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. C# und VB.NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Siehe auch
    7. 3.6 Auf eine vollständige Übereinstimmung einer Regex mit einem Text prüfen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. C# und VB.NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Siehe auch
    8. 3.7 Auslesen des übereinstimmenden Texts
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Siehe auch
    9. 3.8 Position und Länge der Übereinstimmung ermitteln
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Siehe auch
    10. 3.9 Teile des übereinstimmenden Texts auslesen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Benannte Captures
        1. C#
        2. VB.NET
        3. PHP
        4. Perl
        5. Python
      5. Siehe auch
    11. 3.10 Eine Liste aller Übereinstimmungen erhalten
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Siehe auch
    12. 3.11 Durch alle Übereinstimmungen iterieren
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Siehe auch
    13. 3.12 Übereinstimmungen in prozeduralem Code überprüfen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
      4. Siehe auch
    14. 3.13 Eine Übereinstimmung in einer anderen Übereinstimmung finden
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
      4. Siehe auch
    15. 3.14 Alle Übereinstimmungen ersetzen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Siehe auch
    16. 3.15 Übereinstimmungen durch Teile des gefundenen Texts ersetzen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Benannte Captures
        1. C#
        2. VB.NET
        3. PHP
        4. Perl
        5. Python
        6. Ruby
      5. Siehe auch
    17. 3.16 Übereinstimmungen durch Text ersetzen, der im Code erzeugt wurde
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      4. Siehe auch
    18. 3.17 Alle Übereinstimmungen innerhalb der Übereinstimmungen einer anderen Regex ersetzen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
      4. Siehe auch
    19. 3.18 Alle Übereinstimmungen zwischen den Übereinstimmungen einer anderen Regex ersetzen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. Perl und Ruby
        2. Python
      4. Siehe auch
    20. 3.19 Einen String aufteilen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. C# und VB.NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Siehe auch
    21. 3.20 Einen String aufteilen und die Regex-Übereinstimmungen behalten
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Siehe auch
    22. 3.21 Zeile für Zeile suchen
      1. Problem
      2. Lösung
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Diskussion
      4. Siehe auch
  6. 4. Validierung und Formatierung
    1. 4.1 E-Mail-Adressen überprüfen
      1. Problem
      2. Lösung
        1. Einfach
        2. Einfach, mit Einschränkung der Zeichen
        3. Einfach, mit allen Zeichen
        4. Keine Punkte am Anfang, am Ende und direkt nacheinander
        5. Top-Level-Domain besitzt zwischen zwei und sechs Zeichen
      3. Diskussion
        1. E-Mail-Adressen
        2. Regex-Syntax
        3. Eine Regex Schritt für Schritt aufbauen
      4. Variationen
      5. Siehe auch
    2. 4.2 Nordamerikanische Telefonnummern validieren
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Ersetzungstext
        3. C#
        4. JavaScript
        5. Andere Programmiersprachen
      3. Diskussion
      4. Variationen
        1. Ungültige Telefonnummern eliminieren
        2. Telefonnummern in Dokumenten finden
        3. Eine führende „1“ zulassen
        4. Telefonnummern mit sieben Ziffern zulassen
      5. Siehe auch
    3. 4.3 Internationale Telefonnummern überprüfen
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. JavaScript
        3. Andere Programmiersprachen
      3. Diskussion
      4. Variationen
        1. Validieren von internationalen Telefonnummern im EPP-Format
      5. Siehe auch
    4. 4.4 Klassische Datumsformate validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
      5. Siehe auch
    5. 4.5 Klassische Datumsformate exakt validieren
      1. Problem
      2. Lösung
        1. C#
        2. Perl
        3. Lösung nur mit einem regulären Ausdruck
      3. Diskussion
      4. Siehe auch
    6. 4.6 Klassische Zeitformate validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
      5. Siehe auch
    7. 4.7 Datums- und Uhrzeitwerte im Format ISO 8601 validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    8. 4.8 Eingabe auf alphanumerische Zeichen beschränken
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Ruby
        3. Andere Programmiersprachen
      3. Diskussion
      4. Variationen
        1. Eingabe auf ASCII-Zeichen einschränken
        2. Eingabe auf ASCII-Zeichen ohne Steuerzeichen und auf Zeilenumbrüche einschränken
        3. Eingabe auf die Zeichen begrenzen, die sowohl in ISO-8859-1 als auch in Windows-1252 vorkommen
        4. Eingabe auf alphanumerische Zeichen in beliebigen Sprachen einschränken
      5. Siehe auch
    9. 4.9 Die Länge des Texts begrenzen
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Perl
        3. Andere Programmiersprachen
      3. Diskussion
      4. Variationen
        1. Die Länge eines bestimmten Musters begrenzen
        2. Anzahl der Zeichen ohne Whitespace einschränken
        3. Anzahl der Wörter einschränken
      5. Siehe auch
    10. 4.10 Die Zeilenanzahl eines Texts beschränken
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. PHP (PCRE)
        3. Andere Programmiersprachen
      3. Diskussion
      4. Variationen
        1. Umgang mit esoterischen Zeilentrennern
      5. Siehe auch
    11. 4.11 Antworten auswerten
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. JavaScript
        3. Andere Programmiersprachen
      3. Diskussion
      4. Siehe auch
    12. 4.12 US-Sozialversicherungsnummern validieren
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Python
        3. Andere Programmiersprachen
      3. Diskussion
      4. Variationen
        1. Sozialversicherungsnummern in Dokumenten finden
      5. Siehe auch
    13. 4.13 ISBN validieren
      1. Problem
      2. Lösung
        1. Reguläre Ausdrücke
        2. JavaScript
        3. Python
        4. Andere Programmiersprachen
      3. Diskussion
        1. ISBN-10-Prüfsumme
        2. ISBN-13-Prüfsumme
      4. Variationen
        1. ISBNs in Dokumenten finden
        2. Falsche ISBN-Kennungen finden
      5. Siehe auch
    14. 4.14 ZIP-Codes validieren
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. VB.NET
        3. Andere Programmiersprachen
      3. Diskussion
      4. Siehe auch
    15. 4.15 Kanadische Postleitzahlen validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    16. 4.16 Britische Postleitzahlen validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    17. 4.17 Deutsche Postleitzahlen validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
        1. Postleitzahlen in anderen europäischen Ländern
      5. Siehe auch
    18. 4.18 Namen von „Vorname Nachname“ nach „Nachname, Vorname“ umwandeln
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Ersetzung
        3. JavaScript
        4. Andere Programmiersprachen
      3. Diskussion
      4. Variationen
        1. Nachnamensbestandteile am Anfang des Namens aufführen
    19. 4.19 Kreditkartennummern validieren
      1. Problem
      2. Lösung
        1. Leerzeichen und Bindestriche entfernen
        2. Validieren der Nummer
        3. Beispiel-Webseite mit JavaScript
      3. Diskussion
        1. Leerzeichen und Bindestriche entfernen
        2. Validieren der Nummer
        3. Einbau der Lösung in eine Webseite
      4. Zusätzliche Validierung mit dem Luhn-Algorithmus
    20. 4.20 Europäische Umsatzsteuer-Identifikationsnummern
      1. Problem
      2. Lösung
        1. Leerzeichen, Bindestriche und Punkte entfernen
        2. Überprüfen der Nummer
      3. Diskussion
        1. Leerzeichen, Punkte und Bindestriche entfernen
        2. Validieren der Nummer
      4. Variationen
      5. Siehe auch
  7. 5. Wörter, Zeilen und Sonderzeichen
    1. 5.1 Ein bestimmtes Wort finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    2. 5.2 Eines von mehreren Wörtern finden
      1. Problem
      2. Lösung
        1. Alternation
        2. Beispiellösung in JavaScript
      3. Diskussion
        1. Alternation
        2. Beispiellösung in JavaScript
      4. Siehe auch
    3. 5.3 Ähnliche Wörter finden
      1. Problem
      2. Lösung
        1. Jogurt oder Joghurt
        2. rot, tot oder Not
        3. Wörter, die auf „phobie“ enden
        4. Martin, Marten oder Maarten
        5. Varianten von „regulärer Ausdruck”
      3. Diskussion
        1. Verwenden von Wortgrenzen, um vollständige Wörter zu finden
        2. Jogurt oder Joghurt
        3. Rot, tot oder Not
        4. Wörter, die auf „phobie“ enden
        5. Martin, Marten oder Maarten
        6. Varianten von „regulärer Ausdruck”
      4. Siehe auch
    4. 5.4 Alle Wörter außer einem bestimmten finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
        1. Wörter finden, die ein anderes Wort nicht enthalten
      5. Siehe auch
    5. 5.5 Ein beliebiges Wort finden, auf das ein bestimmtes Wort nicht folgt
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
      5. Siehe auch
    6. 5.6 Ein beliebiges Wort finden, das nicht hinter einem bestimmten Wort steht
      1. Problem
      2. Lösung
        1. Lookbehind
        2. Wörter, vor denen nicht „rot“ steht
        3. Lookbehinds simulieren
      3. Diskussion
        1. Lookbehinds mit fester, endlicher und unendlicher Länge
        2. Lookbehinds simulieren
      4. Variationen
      5. Siehe auch
    7. 5.7 Wörter finden, die nahe beieinanderstehen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
        1. Verwenden einer Bedingung
        2. Drei oder mehr Wörter finden, die nahe beieinanderliegen
          1. Exponentiell wachsende Permutationen
          2. Die hässliche Lösung
          3. Leere Rückwärtsreferenzen ausnutzen
          4. JavaScript-Rückwärtsreferenzen mit eigenen Regeln
        3. Mehrere Wörter, die einen beliebigen Abstand voneinander haben können
      5. Siehe auch
    8. 5.8 Wortwiederholungen finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    9. 5.9 Doppelte Zeilen entfernen
      1. Problem
      2. Lösung
        1. Option 1: Zeilen sortieren und hintereinanderliegende Duplikate entfernen
        2. Option 2: Das letzte Vorkommen jeder doppelten Zeile in einer unsortierten Datei behalten
        3. Option 3: Das erste Vorkommen jeder doppelten Zeile in einer unsortierten Datei behalten
      3. Diskussion
        1. Option 1: Zeilen sortieren und hintereinanderliegende Duplikate entfernen
        2. Option 2: Das letzte Vorkommen jeder doppelten Zeile in einer unsortierten Datei behalten
        3. Option 3: Das erste Vorkommen jeder doppelten Zeile in einer unsortierten Datei behalten
      4. Siehe auch
    10. 5.10 Vollständige Zeilen finden, die ein bestimmtes Wort enthalten
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
      5. Siehe auch
    11. 5.11 Vollständige Zeilen finden, die ein bestimmtes Wort nicht enthalten
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    12. 5.12 Führenden und abschließenden Whitespace entfernen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
      5. Siehe auch
    13. 5.13 Wiederholten Whitespace durch ein einzelnes Leerzeichen ersetzen
      1. Problem
      2. Lösung
        1. Alle Whitespace-Zeichen finden
        2. Horizontale Whitespace-Zeichen finden
      3. Diskussion
        1. Alle Whitespace-Zeichen finden
        2. Horizontale Whitespace-Zeichen finden
      4. Siehe auch
    14. 5.14 Regex-Metazeichen maskieren
      1. Problem
      2. Lösung
        1. Eingebaute Lösungen
        2. Regulärer Ausdruck
        3. Ersetzung
        4. Beispielfunktion in JavaScript
      3. Diskussion
      4. Variationen
      5. Siehe auch
  8. 6. Zahlen
    1. 6.1 Integer-Zahlen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    2. 6.2 Hexadezimale Zahlen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    3. 6.3 Binärzahlen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    4. 6.4 Führende Nullen entfernen
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Ersetzung
        3. Auslesen der Zahlen in Perl
        4. Führende Nullen in PHP entfernen
      3. Diskussion
      4. Siehe auch
    5. 6.5 Zahlen innerhalb eines bestimmten Bereichs
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    6. 6.6 Hexadezimale Zahlen in einem bestimmten Bereich finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    7. 6.7 Gleitkommazahlen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    8. 6.8 Zahlen mit Tausendertrennzeichen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    9. 6.9 Römische Zahlen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Römische Zahlen in Dezimalzahlen umwandeln
      5. Siehe auch
  9. 7. URLs, Pfade und Internetadressen
    1. 7.1 URLs validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    2. 7.2 URLs in einem längeren Text finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    3. 7.3 URLs in Anführungszeichen in längerem Text finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    4. 7.4 URLs mit Klammern in längerem Text finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    5. 7.5 URLs in Links umwandeln
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    6. 7.6 URNs validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    7. 7.7 Generische URLs validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    8. 7.8 Das Schema aus einer URL extrahieren
      1. Problem
      2. Lösung
        1. Extrahieren des Schema aus einer URL, die schon validiert wurde
        2. Extrahieren des Schemas beim Validieren der URL
      3. Diskussion
      4. Siehe auch
    9. 7.9 Den Benutzer aus einer URL extrahieren
      1. Problem
      2. Lösung
        1. Extrahieren des Benutzers aus einer URL, die schon validiert ist
        2. Extrahieren des Benutzers während des Validierens der URL
      3. Diskussion
      4. Siehe auch
    10. 7.10 Den Host aus einer URL extrahieren
      1. Problem
      2. Lösung
        1. Extrahieren des Hosts aus einer als valide bekannten URL
        2. Extrahieren des Hosts beim Validieren der URL
      3. Diskussion
      4. Siehe auch
    11. 7.11 Den Port aus einer URL extrahieren
      1. Problem
      2. Lösung
        1. Extrahieren des Ports aus einer URL, die als gültig bekannt ist
        2. Extrahieren des Ports beim Validieren der URL
      3. Diskussion
      4. Siehe auch
    12. 7.12 Den Pfad aus einer URL extrahieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    13. 7.13 Die Query aus einer URL extrahieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    14. 7.14 Das Fragment aus einer URL extrahieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    15. 7.15 Domainnamen validieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    16. 7.16 IPv4-Adressen finden
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Perl
      3. Diskussion
      4. Siehe auch
    17. 7.17 IPv6-Adressen finden
      1. Problem
      2. Lösung
        1. Standardnotation
        2. Gemischte Notation
        3. Standardnotation oder gemischte Notation
        4. Komprimierte Notation
        5. Komprimierte gemischte Notation
        6. Standardnotation, gemischte oder komprimierte Notation
      3. Diskussion
        1. Standardnotation
        2. Gemischte Notation
        3. Standardnotation oder gemischte Notation
        4. Komprimierte Notation
        5. Komprimierte gemischte Notation
        6. Standardnotation, gemischte oder komprimierte Notation
      4. Siehe auch
    18. 7.18 Einen Pfad unter Windows validieren
      1. Problem
      2. Lösung
        1. Pfade mit Laufwerkbuchstaben
        2. Pfade mit Laufwerkbuchstaben und UNC-Pfade
        3. Pfade mit Laufwerkbuchstaben, UNC-Pfade und relative Pfade
      3. Diskussion
        1. Pfade mit Laufwerkbuchstaben
        2. Pfade mit Laufwerkbuchstaben und UNC-Pfade
        3. Pfade mit Laufwerkbuchstaben, UNC-Pfade und relative Pfade
      4. Siehe auch
    19. 7.19 Pfade unter Windows in ihre Bestandteile aufteilen
      1. Problem
      2. Lösung
        1. Pfade mit Laufwerkbuchstaben
        2. Pfade mit Laufwerkbuchstaben und UNC-Pfade
        3. Pfade mit Laufwerkbuchstaben, UNC-Pfade und relative Pfade
      3. Diskussion
        1. Pfade mit Laufwerkbuchstaben
        2. Pfade mit Laufwerkbuchstaben und UNC-Pfade
        3. Pfade mit Laufwerkbuchstaben, UNC-Pfade und relative Pfade
      4. Siehe auch
    20. 7.20 Den Laufwerkbuchstaben aus einem Pfad unter Windows extrahieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    21. 7.21 Den Server und die Freigabe aus einem UNC-Pfad extrahieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    22. 7.22 Die Ordnernamen aus einem Pfad unter Windows extrahieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    23. 7.23 Den Dateinamen aus einem Pfad unter Windows extrahieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    24. 7.24 Die Dateierweiterung aus einem Pfad unter Windows extrahieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    25. 7.25 Ungültige Zeichen aus Dateinamen entfernen
      1. Problem
      2. Lösung
        1. Regulärer Ausdruck
        2. Ersetzung
      3. Diskussion
      4. Siehe auch
  10. 8. Markup und Datenaustausch
    1. 8.1 Tags im XML-Stil finden
      1. Problem
      2. Lösung
        1. Quick and dirty
        2. Zulassen von > in Attributwerten
        3. (X)HTML-Tags (nicht streng)
        4. (X)HTML-Tags (streng)
        5. XML-Tags (streng)
      3. Diskussion
        1. Eine Warnung
        2. Quick and dirty
        3. Zulassen von > in Attributwerten
        4. (X)HTML-Tags (nicht streng)
        5. (X)HTML-Tags (streng)
        6. XML-Tags (streng)
        7. Schwierige (X)HTML- und XML-Abschnitte überspringen
          1. Äußere Regex für (X)HTML
          2. Äußere Regex für XML
      4. Variationen
        1. Gültige HTML 4-Tags finden
      5. Siehe auch
    2. 8.2 <b>-Tags durch <strong> ersetzen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Variationen
        1. Eine Liste mit Tags ersetzen
      5. Siehe auch
    3. 8.3 Alle Tags im XML-Stil außer <em> und <strong> entfernen
      1. Problem
      2. Lösung
        1. Lösung 1: Tags außer <em> und <strong> finden
        2. Lösung 2: Tags außer <em> und <strong> finden, sofern die beiden Tags keine Attribute enthalten
      3. Diskussion
      4. Variationen
        1. Attribute auf einer Whitelist
      5. Siehe auch
    4. 8.4 XML-Namen finden
      1. Problem
      2. Lösung
        1. Namen in XML 1.0 (Näherung)
        2. Namen in XML 1.1 (exakt)
      3. Diskussion
        1. Namen in XML 1.0
        2. Namen in XML 1.1
      4. Variationen
      5. Siehe auch
    5. 8.5 Einfachen Text durch Ergänzen von <p>- und <br>- Tags nach HTML konvertieren
      1. Problem
      2. Lösung
        1. Schritt 1: HTML-Sonderzeichen durch Zeichenreferenzen ersetzen
        2. Schritt 2: Alle Zeilenumbrüche durch <br> ersetzen
        3. Schritt 3: Doppelte <br>-Tags durch </p><p> ersetzen
        4. Schritt 4: Kompletten String mit <p>...</p> umschließen
        5. JavaScript-Beispiel
      3. Diskussion
        1. Schritt 1: HTML-Sonderzeichen durch Zeichenreferenzen ersetzen
        2. Step 2: Alle Zeilenumbrüche durch <br> ersetzen
        3. Schritt 3: Doppelte <br>-Tags durch </p><p> ersetzen
        4. Schritt 4: Kompletten String mit <p>...</p> umschließen
      4. Siehe auch
    6. 8.6 Ein bestimmtes Attribut in Tags im XML-Stil finden
      1. Problem
      2. Lösung
        1. Tags mit einem Attribut id (quick and dirty)
        2. Tags mit einem Attribut id (zuverlässiger)
        3. <div>-Tags mit einem Attribut id
        4. Tags mit einem Attribut id, das den Wert „my-id“ hat
        5. Tags mit dem Attribut „class”, in dem „my-class“ enthalten ist
      3. Diskussion
      4. Siehe auch
    7. 8.7 Tags vom Typ <table> ein Attribut „cellspacing“ hinzufügen, die es noch nicht haben
      1. Problem
      2. Lösung
        1. Regex 1: Stark vereinfachte Lösung
        2. Regex 2: Zuverlässigere Lösung
        3. Das neue Attribut einfügen
      3. Diskussion
      4. Siehe auch
    8. 8.8 Kommentare im XML-Stil entfernen
      1. Problem
      2. Lösung
      3. Diskussion
        1. Funktionsweise
        2. Wann Kommentare nicht entfernt werden dürfen
      4. Variationen
        1. Gültige Kommentare im XML-Stil finden
        2. Kommentare im C-Stil finden
      5. Siehe auch
    9. 8.9 Wörter in Kommentaren im XML-Stil finden
      1. Problem
      2. Lösung
        1. Zweistufiges Vorgehen
        2. Einstufiges Vorgehen
      3. Diskussion
        1. Zweistufiges Vorgehen
        2. Einstufiges Vorgehen
      4. Variationen
      5. Siehe auch
    10. 8.10 Ändern der Feldbegrenzer in CSV-Dateien
      1. Problem
      2. Lösung
        1. JavaScript-Beispiel
      3. Diskussion
      4. Siehe auch
    11. 8.11 CSV-Felder aus einer bestimmten Spalte extrahieren
      1. Problem
      2. Lösung
        1. JavaScript-Beispiel
      3. Diskussion
      4. Variationen
        1. Einen CSV-Datensatz finden und das Feld in Spalte 1 in der Rückwärtsreferenz 1 einfangen
        2. Einen CSV-Datensatz finden und das Feld in Spalte 2 in der Rückwärtsreferenz 1 einfangen
        3. Einen CSV-Datensatz finden und das Feld in Spalte 3 oder größer in der Rückwärtsreferenz 1 einfangen
        4. Ersetzungstext
    12. 8.12 Sektionsüberschriften in INI-Dateien finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    13. 8.13 Sektionsblöcke in INI-Dateien finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    14. 8.14 Name/Wert-Paare in INI-Dateien finden
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
  11. A. Über die Autoren
  12. Stichwortverzeichnis
  13. Kolophon