seth: RegExp in JAVA

Beitrag lesen

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