![]() | 1 ShindouHIkaru 2017-06-30 13:27:57 +08:00 正则可以实现,主要注意的是特殊符号(比如\n 空格 ,)以及注释的分割,最好是自己动手试试,发现不行了,贴出代码让大家找一下问题,这样比较好,而不是贴个需求上来就问 |
![]() | 2 revotu OP @ShindouHIkaru classValues = re.findall(r'\.([\w_-]+)',content) idValues = re.findall(r'#([\w_-]+)',content) 但是会多出好多并不属于 ID 和 class 的值, 比如下面情况: background-color: #fff; -webkit-box-shadow: 0 0 2px 0 rgba(31, 31, 31, 0.07); |
![]() | 3 porrat 2017-06-30 13:55:18 +08:00 |
![]() | 4 ShindouHIkaru 2017-06-30 14:07:09 +08:00 @revotu 提供你一个思路,在不考虑派生选择器和注释的情况下 id 和 class 后面是要跟‘{'符号的,你这样的条件显然不够 |
![]() | 5 revotu OP |
![]() | 6 revotu OP idValues = re.findall(r'#([\w_-]+)',content) 我想知道 我这种匹配 id 的时候 怎样能排除那种后面紧跟着着分号的: background-color: #fff; 排除了这种 我的匹配 id 应该就准确了吧 |
![]() | 7 ShindouHIkaru 2017-06-30 18:42:03 +08:00 @revotu 我不确定你的文件的复杂性,但是如果是通常的写法,可以利用行头直接判断 r'^\.([\w_-]+)' r'^#([\w_-]+)' 都加上了'^'符号,你可以看看有没有全部选中。可以试试哈 ps: 可以在 sublime 直接能看到正则结果 |
![]() | 8 ShindouHIkaru 2017-06-30 18:44:27 +08:00 @revotu 因为不同的文件,正则的复杂程度是不一样的,只要针对目标写出最简单的写法,我觉得就足够了,如果你加上^还是不行的话,你可以贴出你的 css 文件一起看看怎么解决 |
![]() | 9 P233 2017-07-01 10:52:15 +08:00 写个 PostCSS 插件做这个事情会轻松地多 |