Smagjus
Vice Admiral
- Registriert
- Feb. 2011
- Beiträge
- 6.148
Hallo zusammen,
ich bin gerade dabei mich fit zu machen was Regex angeht und stehe an einer Stelle ziemlich auf dem Schlauch. Ich habe einen Regex mit 3 definierten Gruppen und wende diesesn auf einen String an. Nun möchte ich neben dem match.value und match.index auch die Nummer der Gruppe erfahren, die auf mein jeweiliges Match zutrifft. Ist das ohne weiteres möglich? Ich hab das Gefühl ich versteh etwas grundlegendes an den Gruppen nicht und komme deshalb nicht auf die Lösung. Es wäre nett, wenn mir das Brett vorm Kopf entfernen könnte
Die heikle Stelle im Code habe ich mal mit drei ??? markiert, damit man weiß, was ich möchte.
ich bin gerade dabei mich fit zu machen was Regex angeht und stehe an einer Stelle ziemlich auf dem Schlauch. Ich habe einen Regex mit 3 definierten Gruppen und wende diesesn auf einen String an. Nun möchte ich neben dem match.value und match.index auch die Nummer der Gruppe erfahren, die auf mein jeweiliges Match zutrifft. Ist das ohne weiteres möglich? Ich hab das Gefühl ich versteh etwas grundlegendes an den Gruppen nicht und komme deshalb nicht auf die Lösung. Es wäre nett, wenn mir das Brett vorm Kopf entfernen könnte
Die heikle Stelle im Code habe ich mal mit drei ??? markiert, damit man weiß, was ich möchte.
Code:
static void Main(string[] args) {
String test = "sdgfhdgst<tag sdedgfgf attr=\"test\" fdghsdgsgfdd> valuevaluevalue </tag> \n safasdf sdfsdafdf \t <tag>sdagfsadfsdf</tag>";
String tagname = "tag";
String start = "<" + tagname + "[^<>]*>";
String end = "</" + tagname + ">";
String empty = "<" + tagname + "[^<>]*/>";
Regex regex = new Regex(@"(" + start + ")|(" + end + ")|(" + empty + ")");
MatchCollection mc = regex.Matches(test);
foreach (Match match in mc)
{
Console.WriteLine("{0} found at {1}.\n[B]Capturegroup is {2}.", match.Value, match.Index, "???");
}
Console.Read();
}