PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Regex


Gast
2011-01-08, 15:54:53
Hi,

ich sitze gerade hier an einer Programmierhausaufgabe und muss einen String nach Werten interpretieren. Nun habe ich folgende Zeile und will nur zum Beispiel den Pfad des Bildes herausfiltern.


Kundennummer=pbc277IDI Kontoinhaber=Thomas Picture=pic/SSGP0015.JPG; Typ=GiroKonto Nummer=102510 Betrag=2.0,

Ich bekomme aber keine Regex hin, welche mir auf nur den Inhalt zwischen "Picture=" und dem Semicolon herausfiltert.

Trap
2011-01-08, 16:34:30
Probiers mal damit:
http://weitz.de/regex-coach/

Baalzamon
2011-01-08, 16:54:26
Was geht denn an

Picture=(.*);

nicht?

Mit einem x-beliebigen Applet (http://www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html) getestet und das funktioniert wunderbar... :uponder:

hadez16
2011-01-10, 12:02:53
Picture=([^;])*


sollte es tun.

EDIT: ach ne.

Monger
2011-01-16, 09:56:44
Was geht denn an

Picture=(.*);

nicht?

Punkt (d.h. beliebiges Zeichen) konsumieren ist immer gefährlich. Kann man machen, hat aber seine Tücken. In diesem Fall: dieser reguläre Ausdruck würde ALLES bis zum letzten Strichpunkt konsumieren, also im folgenden Text alles fettgedruckte:

Kundennummer=pbc277IDI Kontoinhaber=Thomas Picture=pic/SSGP0015.JPG; Typ=GiroKonto Nummer=102510 Betrag=2.0;


Besser wirds, wenn man die kleinste Menge durch nen Lazy Operator sucht:

Picture=(.*?);

Noch sicherer wird es, wenn man gezielt nach Leerzeichen und Strichpunkten als Separatoren sucht, und die jeweiligen Wertepaare dann am "=" auftrennt. Manchmal macht man sich selbst das Leben unnötig schwer, wenn man versucht alle Anforderungen zwanghaft in einen einzigen Regex Ausdruck zu quetschen.

Mond
2011-01-16, 10:34:01
Ich denke mal, die Hausaufgabe wird schon abgegeben sein ;)