昨日、mergeCSS を実行するときに 2 つの正規表現を照合するという問題に遭遇しました。これにも多くの時間がかかりました。最終的に、CSS フォレスト グループの CE クラスメートの助けを借りて、これらの 2 つの正規表現を特別に記録することができました。将来的にはそれらを使用します。
1 つ目は、画像パスの一致の問題です。処理される文字列は次のとおりです。
引用した内容は以下の通りです。 |
私が最初に書いたのは次のとおりです。
引用した内容は以下の通りです。 |
結果は次のとおりです。
引用した内容は以下の通りです。 |
ご覧のとおり、2 つの写真を 1 つに一致させた結果は、期待したものではありません。次のように遅延マッチングに変更します。
引用した内容は以下の通りです。 |
結果は次のとおりです。
引用した内容は以下の通りです。 URL(デモ.jpg); |
2 つの写真が一致しました。これは望ましい結果です。 :)
2 番目の問題は、正規表現での変数の使用です。変数の追加が問題となる理由を簡単に説明します。まず、 Javascript正規表現の一般的な記述方法を見てみましょう。 :
引用した内容は以下の通りです。 |
「/」で囲まれた内容はすべて正規表現として扱われるため、変数名は文字列として扱われます。 「/」を付けずに?それは問題ありませんが、「/」を追加しない場合、マッチング モードを指定することができず、最初のものしかマッチングできません。
引用した内容は以下の通りです。 新しい RegExp オブジェクトは、指定されたモードとフラグを使用して RegExp オブジェクトを通じて生成できます。 |
それから:
引用した内容は以下の通りです。
|
ここで注意すべき点は、エスケープするには「\」を使用することです。
引用した内容は以下の通りです。 引数のパターンが文字列ではなく正規表現の場合、RegExp() コンストラクターは、指定された RegExp と同じパターンとフラグを持つ新しい RegExp オブジェクトを作成します。 |
このプロセス中に、「\」は「」に変換されます。つまり、上記の結果は次のようになります。
引用した内容は以下の通りです。
|