Seid gegrüßt,
ich arbeite derzeit (erzwungenermaßen) mit Vb.Net und nutze bis vor kurzem recht erfolgreich die regulären Ausdrücke, um mathematische Ausdrücke zu lösen.
Jetzt habe ich feststellen müssen, dass VB Regexen anders auswertet als andere Umgebungen (Okay, das war zu erwarten ); leider musste ich nun auch feststellen, dass sich mein derzeitiges Problem anscheinend nicht durch irgendeinen Umweg/eine Alternative lösen lässt.
Folgende Problemstellung:
Es kommt ein Ausdruck in der Form „3E+2-2E+3“ an (genausogut können die Zehnerpotenzen fehlen); der String soll in die zwei Operanden zerlegt werden.
Dafür habe ich mir nun folgenden Monster-Ausdruck gebaut:
((?(?=[±]?[0-9,]+E)[±]?[0-9,]+E[±]?[0-9,]+|[±]?[0-9,]+))((?(?=[±]?[0-9,]+E)[±]?[0-9,]+E[±]?[0-9,]+|[±]?[0-9,]+))
Euch wird auffallen, dass der Ausdruck aus zwei identischen bedingten Unterausdrücken besteht. In jeder Testumgebung für reguläre Ausdrücke werden nun die zwei Operanden als Gruppen ausgegeben - Nur in VB matcht er auf den ganzen String, gibt die erste Gruppe korrekt aus und lässt die zweite leer.
Ich glaube, ich habe mich nun schon fünfmal im Kreise gedreht und mein Kollege bietet mir schon ein freies Mittagessen an, wenn ich endlich aufhören würde.
Bitte sagt mir: Was versteht VB bei bedingten Unterausdrücken anders/falsch?
Ich danke euch recht herzlich und grüße lieb,
Sören