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



我正试图找到一个正则表达式,它可以让我从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"]、input[type="radio"])

这是我对正则表达式的尝试。当它工作时,它包括/*这是一个测试*/注释,它还包括大括号。理想情况下,这些将被省略。

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

如有任何帮助,我们将不胜感激。非常感谢!

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

只要您的声明总是在同一行上有开头的方括号,如您的示例:

(.+) {

如果你需要,我可以给你一些代码,告诉你如何获得小组。让我知道你在使用什么语言,我会尽力遵守!

此粗略正则表达式将捕获子模式2中的选择器。由于它不是一个解析器,所以它也会在注释中捕获选择器。

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

我无法使用RegEx获得解决方案,所以我听从了Qtax的建议,使用了一个带有CSS3语法的正确解析器。

我把这个问题当作答案。

@Qtax-如果你添加你的评论作为答案,我会将其标记为"正确"答案:)

最新更新