2017-02-28 17 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カウント。

実際の状況は「if」と「endif」が異なる行にあると思います。したがって、Dot(。)に改行を含めるには、Singlelineオプションを使用する必要があります。

入力:

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

パターン(単一行オプション付き):

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

マッチ1つのカウント。

これは一致しますが、すべての文字列に一致するのは1カウントだけです。ドット(。)は最初に "[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]--> 
に変更する必要があります
関連する問題