我正在重构一堆CSS(10000多行),而不是手动逐行转换,从这个:
-webkit-transition: .1s linear all;
-moz-transition: .1s linear all;
transition: .1s linear all;
进入这个:
.transition(.1s linear all);
有没有办法用regex来加快速度?
谢谢!
这实际上取决于数据的可变程度,但这是一个好的开始:
/(?:s*(?:-(?:webkit|moz)-)?transition:s*.1s linear all;n)+/
如果值是可变的,请替换与数据匹配的任何模式。
您可以做的一件事来帮助转换,那就是使用CSS解析器读取CSS,然后编写自己的方法来发出LESS代码。这里有一个这样的Java解析器。
我不明白你为什么需要这个。为什么不保留旧的CSS,只用LESS编写新的样式表呢?
但无论哪种方式,我都不认为regex是完成这项任务的最佳选择,因为CSS必须以非常特定的方式编写才能工作,而对于超过10000行的CSS来说,情况可能并非如此。
此外,您还可以使用此转换器。不过,它不会进行你所指的那种转换。
我首先删除所有带前缀的(http://refiddle.com/2t4)然后用mixin替换未固定的(http://refiddle.com/2t5)。
不确定您使用的编辑器是否支持在regex中查找替换。(我在Eclipse IDE中尝试了以下步骤)
步骤1:查找".-webkit-."并替换为空白
步骤2:查找".-moz-./em>"并替换为空白
步骤3:找到"(转换):(.*);"并替换为".$1($2);"
希望这能有所帮助。
#!/usr/bin/python
import re
with open('/tmp/test.txt') as f:
for line in f:
m = re.match(r'(.*)(transition):s*(.*);', line)
if m:
print(".%s(%s);" % (m.group(2), m.group(3)))