Regex + Match Zahlen filtern

Java4Life

Mitglied
hi,

ich habe noch eine Frage bezüglich der regex befehle. und zwar habe ich eine txt-datei,wo inhalte wie:
Code:
[COLOR="Red"]2131241241[/COLOR]
weqe2131de
13123d
qedw123
  rqwr32
[COLOR="Red"]124124[/COLOR]
3124fwe
erw324

drinstehen. nun möchte ich gerne mit match und den regex ausdrücken dafür sorgen,dass aus der liste alle "puren" zahlen herausgefiltert werden. also soll dann nur noch das darinstehen:
Code:
weqe2131de
13123d
qedw123
  rqwr32
3124fwe
erw324

hier ein auszug des codes:

Code:
		String zahl= "3252352a";
		
		if (Pattern.matches("[0-9]", zahl) == false) {
			String hier =   zahl.replaceAll("[0-9]", "");
			   System.out.println("outprint:"+hier);
			}
leider nicht ganz das, was ich will,da selbst die zahlen davor gelöscht werden:
outprint:a

jemand eine idee?^^ danke schon mal!
 
Zuletzt bearbeitet:
Dein Regex ist ja auch falsch. Probier mal
Code:
"\\d+"
Und warum veränderst du die Zeile? Du willst doch die Zeile 1zu1 übernehmen, wenn es nicht dem Muster entspricht.
 
Hi,
du möchtest ja nicht alle zahlen von 0-9 löschen, also mach doch bitte auch kein replaceAll.... denn wenn mann sich replace all übersetzt, bedeutet das "ersetze alle". Wenn du schon eine Zeile hast, schreib sie doch nicht zurück, sondern lösche sie ganz. Das Spart Overhead beim bearbeiten der txt.

Dein Fehler liegt im Pattern. Du testest ob da nur zahlen drin sind --> [0-9]

Dann fragst du ob da False rauskommet.... ähhh.... Da muss False Rauskommen wenn da nen a drin ist !! Schließlich sind es nicht nur Zahlen, sondern auch ein Buchstabe 😉

Diese Zeile wolltest du aber behalten oder? Weil es keine Reine Zahl ist.. oder habe ich das missverstanden ?

Wenn nein : Dann teste im Kopf der IF-Abfrage auf == true !

Tipp:

Eine IF-Abfrage reagiert auf ergebnisse einer Methode, daher brauchst du bei einer Methode die Boolsche werte liefert nicht mit == testen..

Java:
//wenn true rauskommen soll
if( klasse.methode){
....
{
//wenn false rauskommen soll ! == Verneinen
if( !klasse.methode ){
....
}

Für deine Methode Bedeutet dass:

Java:
String zahl= "3252352a";
		
		if ( Pattern.matches("[0-9]", zahl) ) {

			      //Warum einen Neuen String anlegen? einer reicht doch .... 
                              zahl =   zahl.replaceAll("[0-9]", "");
			  
                            System.out.println("Dies war eine Reine Zahl, sie wurde gelöscht!");
                           
			}else{
                                 System.out.println("Mischung gefunden, der String lautet:"+" " +zahl);        
                               }


Liebe Grüße

WhiTeY
 
Dein Regex ist ja auch falsch. Probier mal
Code:
"\\d+"
Und warum veränderst du die Zeile? Du willst doch die Zeile 1zu1 übernehmen, wenn es nicht dem Muster entspricht.

Das hatte ich ganz übersehen. Zur erklärung : \\d ist das selbe wie [0-9], allerdings ist es richtig das wir eine oder belibig viele Ziffern haben wollen. Daher ist \\d+ oder [0-9]+ richtig.

LG
 
Wenn wir schon bei kleinigkeiten sind:
String kannst du auch so auf Muster überprüfen:
Java:
String s = "123456";
System.out.println(s.matches("\\d+"));
 
danke leute!

@WhiTeY ja,wahrscheinlich war es gestern schon zu spät für mich ^^ mit dem true hätte ich natürlich selber darauf kommen können...

ich glaube an der stelle war ich gestern auch ein bisschen verwirrt, weil bei true nichts geprinted wurde -is ja auch logisch warum nicht xD

dann nochmal vielen dank!

thread close ich mal
 

Zurück
Oben