# Mit Regex nach Beträge suchen



## Iron Monkey (15. Aug 2012)

Hi an alle!

Regel, um nach Beträge zu suchen:

(<Leerzeichen>?)<Zahlen mit Punkte>,<Zahlen mit 2 Nachkommastellen>(<Leerzeichen>?)

Inhalt aus der Datei:
------------------------------------------------------------
810000090383 01.06.2012 Schumann, Irma 8100503941 01235879 55,08 *Gerdelmann, E., 110412144, Faii-Nr.: 1930000004157335
2 Leistung 01.07.12-31,07.12 18,36 EUR 200767303 Hebestadt,Gertrud
Leistung 01.08.12-31.08.12
Leistung 01.08.12-31.08.12      18,36
Text001
1.000,25EUR
€ 12.500,00 0546454
€1.635,00 Hallo
1.000.500,25
12315 0,360894
123456789
------------------------------------------------------------

Mein Regex-Ausdruck: 
	
	
	
	





```
[(\d{1,}\.)?]*[\d]*\,[(\d{0,2})]+
```

Ich erwarte dieses Ergebnis:
------------------------------------------------------------
55,08
18,36
18,36
1.000,25
12.500,00
1.635,00
1.000.500,25
------------------------------------------------------------


Das Ergebnis durch den o.g. Ausdruck:
------------------------------------------------------------
55,08
31,07   <---- Falsch, da *01.07.12-31,07.12* davor ein Minus und dahinter ein Punkt steht!
18,36
18,36
1.000,25
12.500,00
1.635,00
1.000.500,25
0,360894     <---- Falsch, da ich nur 2 Nachkommastellen im Regex-Ausdruck gesetzt habe!
------------------------------------------------------------

Irgendwo im Regex-Ausdruck ist ein Fehler, wo ich nicht finden kann? Könnt ihr mir bitte helfen, den o.g. Ausdruck zu berichtigen?

Danke!

Gruß
Iron Monkey


----------



## faetzminator (15. Aug 2012)

Ohne nun über die Sinnhaftigkeit eines solchen Regex diskutieren zu wollen oder die Fehler in dem von dir geschriebenen zu analysieren, funktioniert's doch ganz einfach: [c](?<![-\d.])\d[\d.]*,\d{2}(?!\d)[/c]. Zusätzlich könnte man natürlich noch 3er-Gruppen von Punkten analysieren etc., aber das ging jetzt zu weit


----------



## Iron Monkey (15. Aug 2012)

Hi faetzminator!

Danke, danke! Das ist alles, was ich brauche! 

Ich glaube, ich muss echt ein Anfänger-Buch über Regex lesen!  Welches ganz einfaches Buch würdest du empfehlen?

Gruß
Iron Monkey


----------



## HoaX (15. Aug 2012)

Buch? Garkeines, einfach selbst durchbeißen und verstehen wieso was nicht gehn. z.B. macht [(\d{0,2})]+ keinen Sinn.
0 bis 2 beliebige Ziffern, diese als Klasse, dann mindestens ein Mal... klar dass da mehrere Nachkommastellen angenommen werden. Das ist nichts anderes als [\d]+
Eine Gruppe innerhalb einer Klasse habe ich noch nie sinnvoll gesehen...


----------



## faetzminator (15. Aug 2012)

Einfach ausprobieren  Die Klassenbeschreibung in der Javadoc ist auch super - gerade die Tabelle: Pattern (Java Platform SE 6)


----------

