Wyrażenia regularne - wyciąganie łańcuchów wg wzorca

0

Mam pewien łańcuch zaczynający sie znakiem < i kończący się znakiem > (wewnątrz brak innych znaków < i >).
Chodzi o to aby sprawdzić czy owy łańcuch jest poprawnym otwierającym tagiem XML (z pewnymi dodatkowymi założeniami uwidocznionymi we wzorcu), a jeśli tak, to odczytać jego nazwę i atrybuty. O ile sprawdzić przypasowanie do wzorca jest łatwo, to nie wiem jak wyciągnąć żądane informacje.

Mój wzorzec:

< \w+ (\s+ \w+ \s*=\s* (('[']</span>') | ("[^"]</span>")))* \s* >$

kolorami oznaczyłem nazwę tagu, nazwę atrybutu, wartość atrybutu.

0

początek wzorca(?<GRUPA1>Wzorzec grupy 1)coś tam(?<GRUPA2>Wzorzec grupy 2)

A później np. Match.Groups["GRUPA1"].Value

0

Zrobione. A wygląda to tak:

string exp = @"<b attr1 ='val1'  attr2= ""val2"">";
string pat = @"^<(?<T>\w+)(\s+(?<A>\w+)\s*=\s*(('(?<V>[^']*)')|(""(?<V>[^""]*)"")))*\s*>$";

Match match = (new Regex(pat)).Match(exp);
if(match.Success)
{
    string TagName = match.Groups["T"].Value;
    CaptureCollection attribs = match.Groups["A"].Captures;
    CaptureCollection values = match.Groups["V"].Captures;
    int i = attribs.Count;
    string[] Attribs = new string[i];
    string[] Values = new string[i];
    while(i-- > 0)
    {
        Attribs[i] = attribs[i].Value;
        Values[i] = values[i].Value;
    }
}
</b>

1 użytkowników online, w tym zalogowanych: 0, gości: 1