Entwickler-Ecke

Basistechnologien - Groups ohne Matchcollection?


BlackMatrix - So 13.12.09 20:08
Titel: Groups ohne Matchcollection?
Ich habe gerade einen Blackout, wie kann ich auf die Gruppen bei einem einzelnen Match draufzugreifen?


C#-Quelltext
1:
2:
3:
????? = Regex.Match(text, @"(?<Gruppe1>patter)" + @"(?<Gruppe2>patter)").Value
string gruppe1 = ?????.Groups["Gruppe1"].Value;
string gruppe2 = ?????.Groups["Gruppe2"].Value;


Ich möchte keine Matchcollection erstellen, sondern nur Gruppen für den einfachen Match festlegen und dann zugreifen.

Ich kann kurz erklären was ich machen möchte, ich habe einen String, der wie folgt aussehen könnte "144 + 234 ="(zuvor mit Regex bestimmt) und nun möchte ich, dass mir der Compiler das Ergebnis liefert. Daher war mir das einfachste, dem Regex Gruppen zuzuordnen um dann die Werte einzeln in Integer zu konvertieren und den Operator gespeichert zu haben.

MfG

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


Christian S. - So 13.12.09 20:19

Regex.Match sollte doch eigentlich schon genau das richtige zurückgeben :gruebel:

P.S.: :welcome:


BlackMatrix - So 13.12.09 23:41

Verstehe ich irgendwie nicht ganz. Also ich hab folgenden Codeausschnitt:


C#-Quelltext
1:
string beidegruppen = Regex.Match(text, @"(?<Gruppe1>patter)" + @"(?<Gruppe2>patter)").Value                    



Jetzt will ich aber im nächsten Schritt nicht den string beidegruppen, sondern nur den string einer einzelnen Gruppe.

Angenommen mein string beidegruppen = "24 Stunden" und ich habe für 24 eine Gruppe erstellt und für Stunden eine Gruppe erstellt. Nun wollte ich eigentlich mit


C#-Quelltext
1:
beidegruppe.Groups["Gruppe1"].Value                    


zugreifen, aber das funktioniert nicht, denn String kennt keine Definition für Groups.

Wo ist mein Denkfehler?


Christian S. - So 13.12.09 23:44

Ich schrieb nicht Regex.Match.Value sondern Regex.Match.


BlackMatrix - So 13.12.09 23:50

An welcher Stelle meinst du jetzt? Den String habe ich ja vollständig schon als String, nun will ich ja da nur noch auf die einzelnen Gruppen zugreifen. Um die Regex in einen string zu bekommen muss ich doch erstmal Regex.Match.Value nehmen.


Christian S. - Mo 14.12.09 00:02

Herrje, ist das denn so schwierig? :gruebel:

Regex.Match liefert Dir ein Objekt der Match-Klasse. Das hat z.B. die Groups-Eigenschaft.
Wenn Du direkt auf Regex.Match.Value aufrufst, hast Du einen String, der kennt logischerweise keine Gruppen mehr.

Du solltest schon mal schauen, welchen Rückgabewert die Methoden haben, die Du benutzt :?


BlackMatrix - Mo 14.12.09 01:14

Du bist ein Schatz =) Es funktioniert. Danke