我正在尝试找到一个正则表达式,让我从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文件。它只是我用来测试我的解析的测试文件。
答案 0 :(得分:1)
只要您在声明的同一行上始终使用开头的squggley-bracket,就像在您的示例中一样:
(.+) {
我可以为您提供一些代码,说明如何在需要时获取该组。让我知道你正在使用什么语言,我会尽力遵守!
答案 1 :(得分:0)
这个粗糙的正则表达式将捕获子模式2中的选择器。因为它不是解析器,它也会在注释中捕获选择器。
(\s|^)(.*?)\s*{
答案 2 :(得分:0)
我无法使用RegEx获得解决方案,因此我遵循了Qtax的建议并使用了具有CSS3语法的正确解析器。
我将这个问题标记为答案。
@Qtax - 如果您将评论添加为答案,我会将其标记为“正确”答案:)