AW: [ASP] RegExp Zeichenfolge matchen
Andreas Labres
activeserverpages@glengamoi.com
Tue, 31 May 2005 22:44:32 +0200
Gudula Schwingenheuer wrote:
>>Und um den Text innerhalb der [a] ... [/a] zu bekommen, mußt Du den
>>ersten (einzigen) Subpattern (also das innerhalb der Klammern) erfragen.
>
> Ich weiss jetzt ehrlich gesagt nicht, was Du damit meinst?
Frag mich nicht, wie Microsoft APIs gehen... und was die da mit
Groups und Captures meinen... das Sample erklärt's hoffentlich...
ich weiß ja nicht, was es ausgibt, aber "One", "car"; "red", "car";
"blue", "car" sind jeweils matchende subpatterns, wenn man die
regexp wiederholt anwendet.
----- schnipp ------
string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";
// Compile the regular expression.
Regex r = new Regex(pat, RegexOptions.IgnoreCase);
// Match the regular expression pattern against a text string.
Match m = r.Match(text);
int matchCount = 0;
while (m.Success)
{
Console.WriteLine("Match"+ (++matchCount));
for (int i = 1; i <= 2; i++)
{
Group g = m.Groups[i];
Console.WriteLine("Group"+i+"='" + g + "'");
CaptureCollection cc = g.Captures;
for (int j = 0; j < cc.Count; j++)
{
Capture c = cc[j];
System.Console.WriteLine("Capture"+j+"='" + c + "',
Position="+c.Index);
}
}
m = m.NextMatch();
}
------ schnapp --------
In Perl ist das viel einfacher, da sind $1, $2,... die matchenden
Subpatterns und fertig. ;)