package javacodebook.regex.replace; import java.util.regex.*; /** * Wandelt alle Vorkommnisse von "Frau Meyer" (bzw. Mayer, * Maier, Meier oder Meyer) in "Frau Schultze-Meyer". */ public class RegexReplace { public static void main(String[] args) { String content = args[0]; StringBuffer newContent = new StringBuffer(); Pattern pattern = Pattern.compile("(Frau|Fräulein) (M(ai|ei|ay|ey)er)"); Matcher matcher = pattern.matcher(content); // Namen durch neuen Namen ersetzen int start = 0; while (matcher.find()) { // Die 2te Gruppe ist der Nachname. Es wird der // Text sowie seine Position im String gelesen. int matchStart = matcher.start(2); int matchEnd = matcher.end(2); String nachname = matcher.group(2); // Den Text vor dem gefundenen Namen in den neuen // String übernehmen, und dann den Namen selbst. newContent.append(content.substring(start, matchStart)); newContent.append("Schultze-"); newContent.append(nachname); // Zum nächsten Match gehen start = matchEnd; } // Das letzte Ende des alten Strings an den neuen String hängen. newContent.append(content.substring(start)); System.out.println(newContent); } }