2017-02-28 111 views
1

我有一個Html字符串,我想刪除if和endif標記以及它之間的所有內容。從html中刪除if和endif標記

<![if ..]><style>...</style><![endif]> 

我曾嘗試以下的正則表達式:

<![if.*[endif]> 
<!\\[if.*\\[endif\\]> 

是上述正則表達式缺少一些東西專用箱支架?

回答

0
html = Regex.Replace(html,@"(?is)<!\[if.*?\]>.*?<!\[endif\]>",""); 
1

我認爲你是對的。

輸入:

<![if IE]>IE<br /><![endif]> 
<![if IE 6]>IE 6<br /><![endif]> 

模式:

<!\\[if.*\\[endif\\]> 

匹配2計數。

但我認爲你的實際情況是「如果」和「endif」是在不同的行。所以你必須使用Singleline選項來使Dot(。)包含新行。

輸入:

<![if IE]> 
    IE<br /> 
<![endif]> 
<![if IE 6]> 
    IE 6<br /> 
<![endif]> 

佈線圖案(單線選項):

<!\\[if.*\\[endif\\]> 

匹配1個計數。

它匹配,但只有1個匹配所有字符串。由於Dot(。)搜索所有以「[endif]>」結尾的字符串,而不是先停止「[endif]>」字符串。

所以你必須使用?在第一場比賽中停止。

輸入:

<![if IE]> 
    IE<br /> 
<![endif]> 
<![if IE 6]> 
    IE 6<br /> 
<![endif]> 

佈線圖案(單線選項):

<!\\[if.*?\\[endif\\]> 

匹配2個字。

另外,我認爲你展示了條件註釋的錯誤用法。

<![if ..]><style>...</style><![endif]> 

應更改爲

<!--[if ..]><style>...</style><![endif]-->