1

私は一連の CSS (10,000 行以上) をリファクタリングしており、行ごとに手動で変換するのではなく、次のようにしています。

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

これに:

 .transition(.1s linear all);

これを正規表現で高速化する方法はありますか?

ありがとう!

4

5 に答える 5

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)))
于 2012-08-02T19:03:51.010 に答える
0

使用しているエディターが正規表現でのfind-replaceをサポートするかどうかはわかりません。(Eclipse IDEで次の手順を試しました)

ステップ1:「。-webkit-。」を検索して空白に置き換えます
ステップ2:「。-moz-。」を検索して空白に置き換えます
ステップ3:「(transition):(。*);」を検索します そして、「。$ 1($ 2);」に置き換えます。

お役に立てれば。

于 2012-08-02T18:49:31.157 に答える
0

変換を支援するためにできることの 1 つは、CSS パーサーを使用して CSS を読み取り、独自のメソッドを記述して LESS コードを発行することです。Java 用のそのようなパーサーの 1 つを次に示します

なぜこれが必要なのかわかりません。古い CSS を残して、LESS だけで新しいスタイルシートを作成してみませんか?

しかし、いずれにせよ、正規表現がこのタスクに最適なオプションであるとは思いません。なぜなら、それが機能するには CSS が非常に特殊な方法で書かれている必要があり、10000 行を超える CSS にはおそらく当てはまらないからです。

また、このコンバーターを使用することもできます。ただし、あなたが言及しているタイプの変換は行いません。

于 2012-08-02T18:46:23.220 に答える
0

最初にすべての接頭辞付きのもの (http://refiddle.com/2t4) を削除してから、接頭辞なしのものを mixin (http://refiddle.com/2t5) に置き換えます。

于 2012-08-02T18:47:40.000 に答える
0

それは実際にはデータがどの程度変動するかによって異なりますが、これは良い出発点です:

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

値が可変の場合は、データに一致するパターンに置き換えます。

于 2012-08-02T18:42:04.483 に答える