REG EXP

heli5050

Mitglied
Hallo Freunde,

hab ein kleines Problem:
Ich kann folgenden Text so herbekomme: "DPNR.: " oder "DPNR: " oder "DPNR. " oder "DPNR:. "

hab bislang so meine Reg Exp aufgebaut:

"DPNR\\.?: .... " => leider gilt dieser "Befehl" nur für die ersten beiden daherkommenden Strings, nicht für alle 4.

Was muss ich ändern? Irgendwo ein ODER setzen?

danke
lg
 

kaoZ

Top Contributor
Du kannst einfach folgendes machen

Java:
final String REG_EX = "[DPNR: || DPNR.: || DPNR. || DPNR:. ]?";

[EDIT]ggf. musst du die Punkte Escapen[/EDIT]
 
Zuletzt bearbeitet:

heli5050

Mitglied
klapp leider so nicht, denn ich hab jetzt so einen String:
"[DPNR: || DPNR.: || DPNR. || DPNR:. ]\\s*(\\d{0,}).*"

=> da wirfts mir folgende Exception:
java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(Matcher.java:1140)
at java.util.regex.Matcher.reset(Matcher.java:291)
at java.util.regex.Matcher.<init>(Matcher.java:211)
 

heli5050

Mitglied
Java:
....


if(textNeu.contains("DPNR")){
   textDepot = texteVO[x].getUmttext(); //Bekomme einen Text
   textDPNR = textDepot.replaceAll("&nbsp;"," ").trim(); // Entferne die "Leerzeichen"
   try{
	Scanner sc = new Scanner(textDPNR);
	sc.findInLine("[DPNR:||DPNR.:||DPNR.||DPNR:.]\\s*(\\d{0,}).*");
	depotNr = sc.match().group(1);
	sc.close();
	Pattern pattern = Pattern.compile("^\\d+$"); //Prüfung ob Depot Nr valide
	isDepot = pattern.matcher(depotNr).find(); //boolean für weiteren Code Verlauf
       }catch(IllegalStateException e){
	isDepot = false;
       }
}
 

kaoZ

Top Contributor
So kann das nicht funktionieren....

Du prüfst auf einen string, nicht auf reg-ex...

Java:
If(sc.nextLine ().matches (REG_EX)){
  / / Du musst prüfen ob einer der Begriffe in deiner eingelesen Zeile vorkommt
}

Schreibe vom Handy aus, also bitte Nachsicht falls was nicht hinhaut, kann das geschriebene nicht überprüfen ;)
 
Zuletzt bearbeitet:

Neue Themen


Oben