2010-12-18 5 views
0

Ich habe einen FCK-Editor, in dem der Benutzer einen Text eingibt. Und im Code möchte ich die Klasse entfernen, ID-Attribute des Textes gebucht. Ich weiß, dass dies durch reguläre Ausdrücke gemacht werden kann. Und ich habe einen Code dafür geschrieben, aber leider funktioniert es nicht.Entfernen Klasse, ID-Attribute aller Tags in bestimmten HTML geschrieben

private string RemoveScripts(string input) 
{ 
    string re1 = "(.*?"; // Non-greedy match on filler 
    string re2 = "(class)"; // Word 1 
    string re3 = "(=)"; // Any Single Character 1 
    string re4 = "(\".*?\"))"; // Double Quote String 1 
    string re5 = "(id)"; 
    Regex regClass = new Regex(re1 + re2 + re3 + re4, RegexOptions.IgnoreCase | RegexOptions.Singleline); 
    Regex regID = new Regex(re1 + re5 + re3 + re4, RegexOptions.IgnoreCase | RegexOptions.Singleline); 

    input = regClass.Replace(input, new MatchEvaluator(ReplaceClassID)); 
    input = regID.Replace(input, new MatchEvaluator(ReplaceID)); 
    return input; 
} 

private string ReplaceClassID(Match m) 
{ return ""; } 
+1

Eigentlich zu verwenden, ich bin * nicht * sicher, dass dies mit regulären Ausdrücken durchgeführt werden kann. "Reale" reguläre Ausdrücke sind nicht stark genug, um HTML vollständig zu analysieren. Nun, so ziemlich alles ist heutzutage ein erweiterter regulärer Ausdruck, und was Sie analysieren wollen, klingt nicht * so, als würde es mit der rekursiven Natur von HTML in Konflikt geraten (mit der reguläre Ausdrücke nicht umgehen können). , aber im * besten * Fall wird es furchtbar kompliziert (dank Kommentaren, CDATA-Blöcken und dergleichen). Am besten verwenden Sie einen echten HTML-Parser. –

Antwort

0

try

classPattern = "class=[',\"]([\w- ])*[',\"]" 
idPattern = "id=[',\"]([\w- ])*[',\"]" 
Verwandte Themen