0

正規表現は私にとって非常に紛らわしいので、ここで例を示しましょう。誰かが私を助けてくれることを願っています.

アイコンの配列を作成しています。css は次のようになります。

.icon-download:before {
  content: "\f01a";
}
.icon-upload:before {
  content: "\f01b";
}
.icon-inbox:before {
  content: "\f01c";
}
.icon-play-circle:before {
  content: "\f01d";
}

明らかにもっと多くのアイコンがありますが、アイコン名を取得する必要があります。それぞれを調べて消去するのではなく、正規表現を使用して消去.icon-し、アイコン名を保持してから:before最後まで消去したい}

正規表現について読みましたが、非常に多くの異なる答えと問題があります。特殊文字と数値1〜10およびアルファベットazを置き換える一般的な方法は何ですか.

したがって.icon-、空白で置き換えるのは簡単:before { content:"\ですが、乱数で置き換えるのは難しくなります。

だから私の質問は、私が達成しようとしているものに最適な構文は何ですか?

4

5 に答える 5

2

正規表現を使用する場所によって異なります。どの言語、どのプログラムなど。私が理解していることから.icon-、アイコン名を保持し、残りを消去したいですか?

これは、Notepad ++で使用して、必要な方法で見つけて置き換えることができる(最小限の)正規表現です。

何を見つける:\.icon-|:before \{\r\n.+\r\n\}

と置換する:

出力:

download
upload
inbox
play-circle
于 2013-10-10T02:52:36.727 に答える
0
/.icon-([a-z-]*):before {[^\}]*}/gm

このパターンを使用すると、CSS ファイル内のすべてのアイコン名を反復処理できます。パーツを変更する[a-z-]ことで、それらの名前に含めることができる文字を定義できます。私の例では、atozとダッシュ ( -) を使用しました。

Java コードの例:

public static ArrayList<String> parseIconNames(String css) {
    ArrayList<String> names = new ArrayList<String>();

    Pattern pattern = Pattern.compile(".icon-([a-z-]*):before {[^\\}]*}", Pattern.MULTILINE);
    Matcher matcher = pattern.matcher(css);

    while(matcher.find()) {
        names.add(matcher.group(1));
    }

    return names;
}
于 2016-03-15T10:51:33.727 に答える
0

JavaScript で頭のてっぺんからすぐに思いついた最も単純な形式。

    // add more matches here
var pattern = /(\.icon\-(download|inbox|play\-circle))/g;

var m;

var text = '.icon-download:before {'+
                'content: "\f01a";'+
        '}'+
        '.icon-upload:before {'+
        '  content: "\f01b";'+
        '}'+
        '.icon-inbox:before {'+
        '  content: "\f01c";'+
        '}'+
        '.icon-play-circle:before {'+
        '  content: "\f01d";'+
        '}';

var reg = new RegExp(pattern);

while((m = reg.exec(text)) != null){
   alert(m[0]); 
}
于 2013-10-10T03:01:52.823 に答える