Hallo zusammen!
Ich müsste aus eine String zwei Integer-Werte (mit je einem Regex) herausfiltern und bekomme es nicht hin. Hier der String :
1 (max. 4)
Beide Int-Werte können mehrstellig werden! Danke im voraus!
Gruß, Ernst.
E-Mail : info@inc-x.de
Website : www.inc-x.de
(\d+) (max. (\d+))
die zwei Werte befinden sich dann in den entsprechenden Gruppen.
(\d)(^\d)(\d)*
Hallo,
deine Beschreibung ist nur spärlich, das wäre jedoch eine Möglichkeit, wenn ich dich richtig verstanden habe. Du musst dann im Match auf Groups 0 und 2 zugreifen.
Siehe auch: Regex-Tutorial im Forum bei Artikel
grüße
webstarg
Achso, das war kein Beispielstring sondern ist immer der String.
Dann passt die Antwort von ujr zu deiner Frage.
grüße
deine Beschreibung ist nur spärlich, das wäre jedoch eine Möglichkeit, wenn ich dich richtig verstanden habe. Du musst dann im Match auf Groups 0 und 2 zugreifen.
Hallo!
Danke für die Hilfe! Folgenden Code habe ich jetzt eingebaut:
string UserPerSystem = Regex.Match("1 (max. 4)", @"(\d)*(^\d)*(\d)*", RegexOptions.None).Groups[0].Value;
string HardwareLimit = Regex.Match("1 (max. 4)", @"(\d)*(^\d)*(\d)*", RegexOptions.None).Groups[2].Value;
In der Groups[0] steht auch die 1 drin, aber in Groups[2] ist das Value leer.
Gruß Ernst
E-Mail : info@inc-x.de
Website : www.inc-x.de
Hallo MacReeg,
schreib den * mit in die Gruppe.
Außerdem muss es in der Mitte [\d]* und nicht (\d)* heißen.
Wodurch dich dann natürlich die zweite und nicht mehr die dritte Gruppe interessiert. Verwende im Zweifel benannte Gruppen.
herbivore
Danke, jetzt funktionierts!!!
Gruß, Ernst.
E-Mail : info@inc-x.de
Website : www.inc-x.de
hallo MacReeg,
axo, was mir gerade noch einfällt: es ist besser überall + statt * zu verwenden
herbivore
Hallo herbivore!
Was mir aufgefallen ist, dass der Regex nur mit einstelligen Integer-Werte umgehen kann. Sobald diese zweistellig werden, wird immer nur die letzte Zahl übergeben. Kann man den Regex auch so abändern, dass er mehrstellige Int-Werte herausfiltern kann?
Gruß Ernst
E-Mail : info@inc-x.de
Website : www.inc-x.de
Hallo MacReeg,
das kann der Pattern, wenn du alles umgesetzt hast, was ich geschrieben habe.
herbivore
Tja, da werd ich wohl etwas übersehen haben. Leider sind meine Regex-Kenntnisse eher als rudimentär zu bezeichnen.
Gruß Ernst
E-Mail : info@inc-x.de
Website : www.inc-x.de
Hallo MacReeg,
so lang ist der der Thread nun nicht und selbst wenn du was übersehen hast, sollte ein weiteres Mal lesen sicher helfen.
Ansonsten kann ich dir noch [Artikel] Regex-Tutorial und On-the-fly Regex-Tester: Regex-Lab empfehlen.
herbivore
Hallo Herbivore!
Danke für den Link. Ich habe das jetzt was ich wollte (dank des Links!).
Mit folgenden zwei Patterns funktionierts:
"(\d{1,})+[^\d]+(\d)+"
"(\d)+[^\d]+(\d{1,})+"
Danke nochmal!!!
Gruß Ernst
E-Mail : info@inc-x.de
Website : www.inc-x.de
Hallo MacReeg,
sorry, aber die Pattern sind Murx. Dein Pattern war zwischenzeitlich:
(\d)*(^\d)*(\d)*
Dazu schrieb ich:
schreib den * mit in die Gruppe.
Außerdem muss es in der Mitte [\d]* und nicht (\d)* heißen.
Im Ergebnis also
(\d*)[^\d]*(\d*)
Dann schrieb ich noch
axo, was mir gerade noch einfällt: es ist besser überall + statt * zu verwenden
Im Ergebnis also
(\d+)[^\d]+(\d+)
Und schon hast du, was du willst. Du wärst ohne den Link nur mit dem Thread zu einem besseren Ergebnis gekommen. Der Link war eher dafür, Regex besser zu verstehen.
Warum du statt + das gleichbedeutende aber umständliche {1,} schreibst, ist mir nicht ganz klar geworden. Warum du auf eine Wiederholung mit {1,} noch mal eine unnötige mit + obendrauf setzt, erst recht nicht.
herbivore
Tja, jetzt wo Du es sagst, klings auch plausibel.
Danke und sorry für meine Unkenntnis (ich habe einiges gelernt!).
Gruß Ernst
E-Mail : info@inc-x.de
Website : www.inc-x.de