Autor Beitrag
mmp5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 10.05.10 17:04 
Ich habe folgenden String:
"Mein Vater hat 24.0€ in der Tasche, er hat 19.0% MWST aufgeschlagen und einer möchte noch 19.0L Wasser haben"
Ich muss mit einem RegExPattern Teile von der 19.0% MWST herausfiltern, ich möchte als rückgabe nur 19.0 haben.
Man könnte mittels \d\d\.\d% und dann das % zeichen z.B. mittels Replace löschen ... ich muss das aber alles in einem Regulären ausdruck schaffen
Gibt es keine Möglichkeit, welche sagt finde dieses Pattern gib aber nur ein Teil davon als ergebnis zurück?

z.B: (\d\d\.\d)% und alles was innerhalb der Klammer ist, soll als Ergebnis zurückgeliefert werden ?!?!
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 10.05.10 17:22 
user profile iconmmp5 hat folgendes geschrieben Zum zitierten Posting springen:
z.B: (\d\d\.\d)%
Genau das. Mit match.Groups[1] kommst du dann an den Wert, der vom ersten Klammerpaar gematcht wurde.

_________________
>λ=
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Di 11.05.10 08:52 
Hallo,

.NET bietet auch die Möglichkeit von benannten Groups. Über diese kannst du dann im Match Objekt mittels match.Groups["Betrag"].Value oder match.Groups["Mwst"].Value darauf zugreifen. Das finde ich persönlich sicherer, weil die stelle der Gruppe kann sich ja mal ändern. Des Weiteren finde ich match.Groups["Mwst"].Value sprechender als match.Groups[2].Value.

Benannte Gruppen erstellt man mit der syntax (?<name><pattern>). Bei deinem Beispiel also (?<Mwst>\d\d\.\d)%

Bzw. falls die Mwst mal wieder unter 10% geht solltest du das Pattern entweder mit \d{anzahl} oder die erste Stelle optional machen ( \d? ).

Gruß