Reguläre Ausdrücke

Zugriffe: 3206 starstarstarstarstarstarstarstarstarstar Bewertung:3 (2 Bewertungen) 20.04.2009

Im Artikel vom 18.04.2009 hatte ich einen DHTML-Editor vorgestellt. So gut die dort genannte Lösung ist, so kommt man um kleinere individuelle Anpassungen und Erweiterungen nicht herum.Eine gute Hilfe sind hierbei Reguläre Ausdrücke.

Das Problem, das immer mal wieder auftaucht ist, dass der im Editmode erzeugte HTML-Code oft nicht valide im Sinne des W3C ist. Entweder sind die Tags großgeschrieben, oder die Attribute erhalten Zuweisungen, ohne dass diese in Hochkommatas eingefasst werden. Vor diesem Problem stand ich unlängst.

Mit der folgenden Anweisung habe ich den HTML-Text durchsucht und die relevanten Passagen ersetzt.

Regex reg = new Regex(@"</?[A-Za-z]+[^>]*>");
MatchCollection mc = reg.Matches(htmlSource);
foreach (Match m in mc)
{
    string value = m.Value;
    Regex reg2 = new Regex("[A-Za-z]+[=]{1}[\"\']?\\s?[A-Za-z0-9\\;\\.?\\:?/-]+\\s?[\"\']?");
    MatchCollection mc2 = reg2.Matches(value);
    foreach (Match m2 in mc2)
    {
        string value2 = m2.Value;
        string[] v = value2.Split('=');
        value =  value.Replace(value2,string.Format("{0}=\"{1}\"", v[0], v[1].Replace("\"", "").Replace("'", "")));
    }
               
    htmlSource = htmlSource.Replace(m.Value, value.ToLower());
}

Der erste Ausdruck ermittelt dabei den HTML-Tag. Der zweite Ausdruck ermittelt alle Attribute innerhalb des HTML-Tags. Der Rest sind dann nur einfache Stringoperationen.

Es macht sich also bezahlt, sich hin und wieder mit Regulären Ausdrücken zu beschäftigen.

 


Neuen Kommentar verfassen

Bestätigungscode