2010-12-18 80 views
0

我有一個fck編輯器,用戶在其中輸入一些文本。而在代碼中,我想剝離類,文本的id屬性發布。我知道這可以通過正則表達式來完成 而且我已經編寫了一些代碼來執行此操作,但不幸的是它無法正常工作。刪除給定html中發佈的所有標籤的class,id屬性

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

其實,我*不*肯定,這可以用正則表達式完成。 「真正的」正則表達式不足以解析所有的HTML。現在,幾乎所有這些日子都是一個擴展的正則表達式,而你試圖解析的東西不會聽起來像它會違背HTML的遞歸本質(這是正則表達式無法處理的) ,但在* best *的情況下,它會非常複雜(感謝評論,CDATA塊等)。你最好的選擇是使用一個真正的HTML解析器。 – 2010-12-18 05:02:31

回答

0

嘗試使用

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