我正试图找到一个正则表达式,它可以让我从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-如果你添加你的评论作为答案,我会将其标记为"正确"答案:)