gudn tach!
String str = "1234=Hallo Welt";
String rep = str.replaceAll("^([0-9]+?)[=]{1}(.+?)", "$1 und $2");
System.out.println(rep); // 1234 und Hallo Welt
bloss als hinweis:
[=]{1} laesst sich kuerzer schreiben als = und
^([0-9]+?)=(.+?)
is hier das gleiche wie
^([0-9]+?)=(.)
denn (.+?) ist non-greedy.
gematcht wird also bloss "1234 und H". der rest bleibt einfach unangetastet.
> Was muss ich aber tun, damit ich nur die Ziffern bekomme?
> Nur der Text geht mit: `String rep = str.replaceAll("^([0-9]+?)[=]{1}(.+?)", "$2");`{:.language-java}.
ja, das ersetzt "1234 und H" durch "H", wodurch du "Hallo Welt" erhaeltst.
> Warum geht dann `String rep = str.replaceAll("^([0-9]+?)[=]{1}(.+?)", "$1");`{:.language-java} nicht so, wie ich es vermutet hätte
das ersetzt "1234 und H" durch "1234", macht zusammen: "1234allo Welt".
> oder ist nur replaceAll() ungünstig für mein Vorhaben?
kommt darauf, wie kompliziert der string bzw. dein genaues vorhaben ist.
String rep = str.replaceAll("=", " und ");
wuerde dir vielleicht schon ausreichen und dann braeuchstest du nicht mal zwangslaeufig regexps einsetzen.
prost
seth