如何使用正则表达式将此块的CSS转换为LESS?

时间:2012-08-02 18:34:31

标签: javascript css regex replace less

我正在重构一堆CSS(10,000多行),而不是逐行手动转换:

-webkit-transition: .1s linear all;
   -moz-transition: .1s linear all;
        transition: .1s linear all;

进入这个:

 .transition(.1s linear all);

有没有办法加速正则表达式?

谢谢!

5 个答案:

答案 0 :(得分:0)

这实际上取决于数据的变量,但这是一个好的开始:

/(?:\s*(?:-(?:webkit|moz)-)?transition:\s*\.1s linear all;\n)+/

如果值是可变的,请替换与您的数据匹配的任何模式。

答案 1 :(得分:0)

您可以做的一件事就是使用CSS解析器来读取CSS,然后编写自己的方法来发出LESS代码。 Here is one such parser for Java

我不明白为什么你会需要这个。你为什么不保留旧的CSS,只在LESS中编写新的样式表?

但无论哪种方式,我都不认为正则表达式是这项任务的最佳选择,因为CSS必须以非常具体的方式编写才能工作,这可能不是超过10000行的情况。 CSS。

此外,您可以使用this converter。它不会进行你所指的转换类型。

答案 2 :(得分:0)

我首先删除所有带前缀的(http://refiddle.com/2t4),然后用mixin替换未加前缀的(http://refiddle.com/2t5)。

答案 3 :(得分:0)

不确定您使用的编辑器是否支持regex中的find-replace。 (我在Eclipse IDE中尝试了以下步骤)

步骤1:找到“。 -webkit - 。”并替换为空白
第2步:找到“。 -moz - 。”并替换为空白
第3步:找到“(转换):(。*);”并替换为“。$ 1($ 2);”

希望这有帮助。

答案 4 :(得分:0)

#!/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)))