如何使用正则表达式拆分css块

时间:2012-03-26 05:44:31

标签: regex

我正在尝试将此css文件拆分为不同的块。匹配/ * @ - 到下一个之前的所有内容都是一个块。我一直试图将这个css代码拆分成单独的块一天,现在没有运气。我真的很感激任何可能的帮助。

/*@- XYZ PAGE
--------------------------------------------------------------*/
#xyz {font-weight:normal; line-height:17px}
#xyz .fieldset-content {padding:0 20px; margin-bottom:50px}
#xyz h2 {color:#BC0000; margin:20px 0 10px 0}

/*@- ar */
#xyz ul {margin-right:25px} /* This is a normal comment */
#xyz p.top a {color:#bc0000; float:left}
#xyz .spot h2 {color:#000; float:right; margin:0}

/*@- ie6 */
#xyz .spot {clear:both}
#xyz .spot .h2seperator {float:left}

/*@- ie6 ar */
#xyz p.top a {color:#bc0000; float:left}
#xyz .spot {margin-top:80px; overflow:hidden; clear:both}
#xyz .spot h2 {color:#000; float:right; margin:0}

/*@- ie7 */
#xyz .spot .h2seperator {float:left}

/*@- ie7 ar */
#xyz .spot .h2seperator {float:right}
#xyz .spot div {float:left}

作为一个例子,这将是一个单独的块:

/*@- ar */
#xyz ul {margin-right:25px} /* This is a normal comment */
#xyz p.top a {color:#bc0000; float:left}
#xyz .spot h2 {color:#000; float:right; margin:0}

这是另一个块:

/*@- XYZ PAGE
--------------------------------------------------------------*/
#xyz {font-weight:normal; line-height:17px}
#xyz .fieldset-content {padding:0 20px; margin-bottom:50px}
#xyz h2 {color:#BC0000; margin:20px 0 10px 0}

1 个答案:

答案 0 :(得分:1)

您可以使用positive lookaheadnon-greedy quantifiers

(\/\*\@-.*?)(?=\/\*\@-|\z)

说明:

  • 捕获组(),匹配:
    • 阻止开始:\/\*\@-(匹配/*@-
    • 任何.零次或多次*懒惰?
  • 后跟,但不包括:(?=)
    • 另一个块开始:\/\*\@-
    • 或:|
    • 文字结尾:\z

要实现这一点,您必须在正则表达式中启用多行,以便.匹配任何字符,包括换行符。

Rubular上的工作示例(编辑:修改了一下以显示它真的有效;前一个示例看起来像一块文本)