【问题标题】:Remove if and endif tags from html从 html 中删除 if 和 endif 标签
【发布时间】:2017-02-28 21:15:53
【问题描述】:

我有一个 Html 字符串,我想删除 if 和 endif 标记以及它们之间的所有内容。

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

我尝试了以下正则表达式:

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

上面的正则表达式是否缺少一些特殊的方括号?

【问题讨论】:

    标签: c# html regex


    【解决方案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]>" 结尾的字符串,而不会在第一个 "[endif]>" 字符串处停止。

    所以你必须使用 ?停在第一场比赛。

    输入:

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

    模式(带单行选项):

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

    匹配 2 个计数。

    此外,我认为您显示了条件 cmets 的错误用法。

    这个

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

    应该改为

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

    【讨论】:

      【解决方案2】:
      html = Regex.Replace(html,@"(?is)<!\[if.*?\]>.*?<!\[endif\]>","");
      

      【讨论】:

        猜你喜欢
        • 2016-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-27
        • 2016-11-05
        • 2017-07-01
        • 1970-01-01
        相关资源
        最近更新 更多