Lassen Sie uns sagen, dass ich die folgende regex haben:Erhalten Sie benannte Gruppe Unter-Pattern von .NET Regex Objekt
var r = new Regex("Space(?<entry>[0-9]{1,3})");
Dann habe ich die Zeichenfolge:
"Space123"
Hier ist mein Programm:
void Main()
{
Regex r = new Regex("Space(?<entry>[0-9]{1,3})", RegexOptions.ExplicitCapture);
foreach (Match m in r.Matches("Space123")){
m.Groups["entry"].Dump(); //Dump() is linqpad to echo the object to console
}
}
Was ich wissen möchte, ist, wenn es eine Möglichkeit gibt, den regulären Ausdruck Teil zu bekommen, die übereinstimmte? In diesem Fall:
(?<entry>[0-9]{1,3})
Ich kann es nirgendwo im Objekt finden, aber man würde denken, dass es zugänglich wäre.
Ich bin mir nicht sicher über Ihre Frage ... der passende Ausdruck ist das Muster, das Sie 'Space (? [0-9] {1,3}) '. Ist das was du brauchst? –
Richtig, aber ich möchte es aus dem Objekt, nur den Capture-Teil, nämlich ( [0-9] {1,3}), nicht die ganze Zeichenfolge. –
Matt
Soweit ich weiß, werden reguläre Ausdrücke normalerweise implementiert, indem hinter den Kulissen eine Zustandsmaschine aufgebaut wird, die die Syntax analysiert und ein boolesches Ergebnis ausspuckt. Daher ist ein einzelner regulärer Ausdruck grundsätzlich sein eigenes in sich geschlossenes System. Der einzige Weg, den ich sehen kann, um zu tun, was Sie wollen, wäre, mehrere kleinere reguläre Ausdrücke zu machen und sie alle separat mit Ihrem Text abzugleichen. – cmcquillan