正则表达式提取CSS类名和ID

时间:2014-01-09 13:05:04

标签: c# regex

我有一些CSS,我正在寻找创建所有类名和标识符的列表。这就是我所拥有的:

var TheList = new List<string>();
var Test2 = Regex.Matches(TheCSS, ".-?[_a-zA-Z]+[_a-zA-Z0-9-]*(?=[^}]*\\{)");

foreach(Match m in Test2)
{
    TheList.Add(m.Value);
}

问题在于存在一些不需要的元素:

body
:hover
select
input
label
[for
input
[type
'radio

我尝试了几种我在网上发现的正则表达式;这一个是最接近的,但还不完美。基本上,它只需要包含以#.开头的元素,以避免body[type,然后不包括:hover之类的伪选择器

我需要在正则表达式中进行哪些更改才能使其正常工作?

感谢。

1 个答案:

答案 0 :(得分:4)

关注the CSS standards,类或ID必须与[_A-Za-z0-9\-]+匹配。因此,类或ID匹配由#.直接加上前缀的字符串。

确定您需要做的就是确保在发生{之前跟随},以确保您不在规则范围内。

结果正则表达式为:([\.#][_A-Za-z0-9\-]+)[^}]*{

Your sample case。相同的正则表达式应用于Facebook CSS