用正则表达式将CSS分解成块

时间:2010-09-13 06:30:30

标签: css ruby regex

我有一个样式表:

a,b,c { stuff
        lots of it
}

b { more stuff }

.test { even more }

我想要一个正则表达式将其分解为三个部分中的每一部分,从'}'分离到'}'应该可以满足我的需要(显然除了第一个案例)。

3 个答案:

答案 0 :(得分:1)

在Ruby 1.9中,你可以

result = subject.split(/(?<=\})/)

即,将字符串拆分为}之后的位置。但是,Ruby 1.8不支持lookbehind断言,所以它不会在那里工作。当然,你会遇到嵌套大括号的问题,但你说这不应该是你的数据的问题。

在Ruby 1.8中(不能在这里试试),以下内容应该有效:

result = subject.split(/(\})/)

虽然现在结束括号不再是匹配元素的一部分。因此,test {a} test2 {b}将分为test {a}test2 {b}以及空字符串。

答案 1 :(得分:0)

在您的情况下可能不合适,但您可以使用CSS解析器通过令牌拆分CSS文件,并独立且无害地对其进行操作。

  1. css_parser(与this guide);
  2. CSSPool(我推荐这个只是因为您只需要从CSS中获取某些选择器;这个选择器就像是CSS的SAX解析器)。

答案 2 :(得分:0)

.scan(/.+?\}/m)