我该如何使用regex将这个CSS块转换为LESS



我正在重构一堆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)))

最新更新