我有一个Html字符串,我想删除if和endif标记以及它之间的所有内容。
<![if ..]><style>...</style><![endif]>
我尝试过以下正则表达式:
<![if.*[endif]>
<!\\[if.*\\[endif\\]>
上面的正则表达式是否遗漏了一些特殊的方括号?
答案 0 :(得分:1)
我认为你是对的。
输入:
<![if IE]>IE<br /><![endif]>
<![if IE 6]>IE 6<br /><![endif]>
模式:
<!\\[if.*\\[endif\\]>
匹配2次计数。
但我认为你的实际情况是“if”和“endif”在不同的行。所以你必须使用Singleline选项让Dot(。)包含新行。
输入:
<![if IE]>
IE<br />
<![endif]>
<![if IE 6]>
IE 6<br />
<![endif]>
模式(使用单行选项):
<!\\[if.*\\[endif\\]>
匹配1次。
匹配,但只有1个匹配所有字符串的计数。因为Dot(。)搜索以“[endif]&gt;”结尾的所有字符串最初没有停止“[endif]&gt;”字符串。
所以你必须使用?在第一场比赛时停止。
输入:
<![if IE]>
IE<br />
<![endif]>
<![if IE 6]>
IE 6<br />
<![endif]>
模式(使用单行选项):
<!\\[if.*?\\[endif\\]>
匹配2个计数。
此外,我认为您错误地使用了条件评论。
此
<![if ..]><style>...</style><![endif]>
应该改为
<!--[if ..]><style>...</style><![endif]-->
答案 1 :(得分:0)
html = Regex.Replace(html,@"(?is)<!\[if.*?\]>.*?<!\[endif\]>","");