Archiv verlassen und diese Seite im Standarddesign anzeigen : Gesuchter Ausdruck ohne prefix
hi,
habe folgendes prob:
möchte aus einer zeichenkette eine 5 stellige zahl auslesen, bei der
davor ein P steht. Ergebnis soll aber nur die zahl liefern.
asdfgp12345qwert
([pP])(\d{5}) liefert mir aber leider p12345
ich bräuchte nur 12345
bin noch nicht durchgestiegen, wie ich das bewerkstellige
jones :-)=
eViL_oNe
08.02.2006, 16:58
in der 2. Gruppe sollte doch der erkannte Teilausdruck stehen?
$value = "asdfgp12345qwert";
$value =~ /([pP])(\d{5})/;
$decimalValue = $2;
gibt's ne möglichkeit, dass man das komplett in nem
regulären ausdruck zusammenfasst?
ich muss das später in ein anderes syszem portieren,
wo ich nicht diese commands habe, sondern nur einen kompletten
ausdruck angeben kann.
jones :-)=
eViL_oNe
09.02.2006, 11:26
jede mir bekannte Regex-Engine hat die Möglichkeit, Subgroups aus einem Match auszuwerten.
In PHP etwa übergibt man den regex-funktionen ein Array für die subgroups. In .NET/Java bekommt man als Match Ergebnis ein Objekt, das selbstverständlich auch die Subgroups beinhaltet
Das Verfahren ist immer das gleiche:
1. regulären Ausdruck ausführen
2. Match-Ergebnis auswerten und Subgroups betrachten
hab's gefunden:
(?<=[pP])(\d{5})
(?<=...)
Positive lookbehind.
trotzdem danke
jones :-)=
eViL_oNe
11.02.2006, 03:04
danke, endlich begriffen, wozu diese ominösen look-around operatoren sind ;)
btw, in diesem Fall kannst du auf die zweite Group verzichten ;)
also nur (?<=[pP])\d{5}
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.