【问题标题】:Using Regex to remove css comments使用正则表达式删除 css 注释
【发布时间】:2011-03-11 11:13:24
【问题描述】:

如何使用 Regex.Replace() 从 CSS 中删除 cmets?

注意 - 我无法使用 C# 中提到的正则表达式 - Regular expression to remove CSS comments。

【问题讨论】:

  • 为什么不能使用?
  • 我怀疑这是因为 PHP 使用 Perl 正则表达式。
  • 现在这是一种模范态度,提供您自己关闭重复关闭的链接。哦,顺便说一句,您的问题应该是对该问题的答案的评论。
  • @Daniel 我不太了解正则表达式,并且该链接中给出的正则表达式在 C# 中有一些转义字符问题。

标签: c# .net regex


【解决方案1】:

这通常就足够了(假设 cssLines 是一个包含 CSS 文件所有行的字符串):

 Regex.Replace(cssLines, @"/\*.+?\*/", string.Empty, RegexOptions.Singleline)

请注意Singleline 选项将允许匹配多行 cmets。

【讨论】:

    【解决方案2】:

    使用链接问题中的正则表达式,如下所示:

    var rx = new Regex(@"(?<!"")\/\*.+?\*\/(?!"")");
    

    【讨论】:

      【解决方案3】:

      我想知道Maxim的解决方案的以下版本是否会更快。

      "/\*[^*]*.*?\*/"
      

      正如讨论所示,这也将消除字符串文字中的 cmets。

      【讨论】:

      • 如果评论本身包含* 字符,则不匹配。
      • 但它也不能正常工作 ;-) 它会检测字符串中的 cmets。有关示例,请参阅链接的问题。
      • @Daniel:鉴于该要求,链接评论中建议的正则表达式也将错误地匹配 " before /* not a comment */ after"。单独使用正则表达式处理所有可能的情况可能变得太复杂了。
      • @Maxim:确实,你是对的。我只检查了原始问题中提供的样本...
      【解决方案4】:

      回复很晚,但认为这对某些人有用

      "(?:/*(.|[\r\n])?/)|(?:(?([^)])//.)"

      This will help removing css comments both singleline and multiline.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-28
        • 2011-05-02
        • 2012-05-20
        • 2012-04-08
        • 2011-05-11
        • 2011-08-04
        • 2019-08-28
        相关资源
        最近更新 更多