RegEx只从CSS文件中提取选择器?

时间:2012-03-12 13:36:35

标签: c# css regex css-selectors

我正在尝试找到一个正则表达式,让我从CSS文件中提取 JUST 规则。我不想要任何样式声明,只需要规则(选择器)。这是我正在使用的示例CSS文件:

body, p, table, td, th, br, div, span {
    /* Some styles here */
}

/* This is a test */
h1 {
    /* Some styles here */
}

a:hover {
    /* Some styles here */
}

-moz-any(input[type="text"], input[type="radio"]) {
    /* Some styles here */
}

在这个例子中,我希望我的正则表达式匹配以下项:body,p,table,td,th,br,div,span,h1,a:hover,-moz-any(input [type =“ text“],输入[type =”radio“])

这是我对正则表达式的尝试。虽然它有效,但它包括/ *这是一个测试* /注释,它还包括花括号。理想情况下,这些将被省略。

(}{0,})([^}]*)({)

对此的任何帮助将不胜感激。非常感谢提前!

我还应该注意,我知道这不是一个很棒的CSS文件。它只是我用来测试我的解析的测试文件。

3 个答案:

答案 0 :(得分:1)

只要您在声明的同一行上始终使用开头的squggley-bracket,就像在您的示例中一样:

(.+) {

我可以为您提供一些代码,说明如何在需要时获取该组。让我知道你正在使用什么语言,我会尽力遵守!

答案 1 :(得分:0)

这个粗糙的正则表达式将捕获子模式2中的选择器。因为它不是解析器,它也会在注释中捕获选择器。

(\s|^)(.*?)\s*{

答案 2 :(得分:0)

我无法使用RegEx获得解决方案,因此我遵循了Qtax的建议并使用了具有CSS3语法的正确解析器。

我将这个问题标记为答案。

@Qtax - 如果您将评论添加为答案,我会将其标记为“正确”答案:)