0Pricing
Java Academy · Lektion

Ersetzen mit Regex

replaceAll und Backreferences

Ersetzen mit Regex ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Mit Regex ersetzen

Regex dient nicht nur zum Suchen, sondern kann auch Text umwandeln. replaceAll ersetzt jede Übereinstimmung durch eine Ersetzungszeichenfolge.

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("\\d+").matcher("a1b22c333");
        System.out.println(m.replaceAll("#"));
    }
}

Abkürzung mit String.replaceAll

String.replaceAll(regex, replacement) ist eine praktische Einzeiler-Variante, die das Pattern intern kompiliert.

public class Main {
    public static void main(String[] args) {
        String cleaned = "hello   world  again".replaceAll("\\s+", " ");
        System.out.println(cleaned);
    }
}

replaceFirst

replaceFirst ersetzt nur die erste Übereinstimmung und lässt spätere Übereinstimmungen unverändert.

public class Main {
    public static void main(String[] args) {
        String s = "cat cat cat".replaceFirst("cat", "dog");
        System.out.println(s);
    }
}

Gruppenreferenzen in Ersetzungen

In der Ersetzungszeichenfolge fügen $1, $2 usw. den von diesen Gruppen erfassten Text ein. So können Sie übereinstimmende Inhalte neu anordnen oder umformatieren.

public class Main {
    public static void main(String[] args) {
        String iso = "30/05/2026".replaceAll("(\\d{2})/(\\d{2})/(\\d{4})", "$3-$2-$1");
        System.out.println(iso);
    }
}

Referenzen auf benannte Gruppen

Sie können in der Ersetzung auch über ${name} auf benannte Gruppen verweisen.

public class Main {
    public static void main(String[] args) {
        String r = "alice@example.com"
            .replaceAll("(?<user>\\w+)@(?<host>[\\w.]+)", "${user} at ${host}");
        System.out.println(r);
    }
}

Dollarzeichen und Backslash escapen

Da $ und \ in Ersetzungen eine besondere Bedeutung haben, escapen Sie ein wörtliches Dollarzeichen als \$. Matcher.quoteReplacement übernimmt das Escapen für Sie.

import java.util.regex.Matcher;

public class Main {
    public static void main(String[] args) {
        String price = "100".replaceAll("\\d+", Matcher.quoteReplacement("$100"));
        System.out.println(price);
    }
}

Berechnete Ersetzungen mit der replaceAll-Funktion

Seit Java 9 kann Matcher.replaceAll eine Funktion entgegennehmen. Dadurch können Sie jede Ersetzung aus der jeweiligen Übereinstimmung berechnen.

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("\\d+").matcher("a1 b2 c3");
        String out = m.replaceAll(mr -> String.valueOf(Integer.parseInt(mr.group()) * 10));
        System.out.println(out);
    }
}

Übereinstimmende Wörter in Großbuchstaben umwandeln

Die Funktionsvariante ist besonders nützlich, wenn die Ersetzung vom übereinstimmenden Text abhängt, etwa beim Umwandeln jedes Wortes in Großbuchstaben.

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("\\b\\w").matcher("hello there world");
        String title = m.replaceAll(mr -> mr.group().toUpperCase());
        System.out.println(title);
    }
}

appendReplacement und appendTail

Für vollständige Kontrolle durchlaufen Sie find in einer Schleife und erstellen die Ausgabe mit appendReplacement und anschließend appendTail. Das ist die klassische Technik auf niedriger Ebene.

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("\\d+").matcher("a1b2");
        StringBuilder sb = new StringBuilder();
        while (m.find()) {
            m.appendReplacement(sb, "[" + m.group() + "]");
        }
        m.appendTail(sb);
        System.out.println(sb);
    }
}

Backreferences im Pattern

Backreferences im Pattern (\1) finden wiederholten Text. Das ist nützlich, um beim Ersetzen doppelte Wörter zusammenzuführen.

public class Main {
    public static void main(String[] args) {
        String fixed = "the the end end".replaceAll("\\b(\\w+) \\1\\b", "$1");
        System.out.println(fixed);
    }
}

Unerwünschte Zeichen entfernen

Eine häufige Anwendung ist die Bereinigung von Eingaben, indem alles außerhalb einer erlaubten Zeichenmenge durch einen leeren String ersetzt wird.

public class Main {
    public static void main(String[] args) {
        String digits = "(555) 123-4567".replaceAll("[^0-9]", "");
        System.out.println(digits);
    }
}

Kurze Überprüfung

Was bedeutet $2 in einer Ersetzungszeichenfolge für replaceAll?

Zusammenfassung

Sie haben Text mit Regex umgewandelt:

  • replaceAll und replaceFirst ersetzen Übereinstimmungen; String bietet dafür Abkürzungen.
  • $1 / ${name} fügen Capturing-Gruppen in Ersetzungen ein. Escapen Sie ein wörtliches $ als \$ oder mit quoteReplacement.
  • Die Funktionsvariante von replaceAll berechnet Ersetzungen aus jeder Übereinstimmung.
  • appendReplacement und appendTail bieten vollständige manuelle Kontrolle.

Häufig gestellte Fragen

Ist die Lektion „Ersetzen mit Regex“ kostenlos?

Ja — der vollständige Text von „Ersetzen mit Regex“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Ersetzen mit Regex“?

replaceAll und Backreferences Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Java Academy zu starten?

Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Ersetzen mit Regex“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?

Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Patterns kompilieren
  2. Suchen und Abgleichen
  3. Capturing Groups
  4. Ersetzen mit Regex
← Zurück zu Java Academy