Есть ли быстрый способ добавить префиксы ко всем CSS-классам и идентификаторам? - PullRequest
4 голосов
/ 22 августа 2011

Мне нужно быстро добавить префиксы ко всем моим классам и идентификаторам, и это довольно большой файл CSS.Я думал о быстрой строке регулярных выражений, но пока мне не удалось.Любые идеи?

Я пробовал простые вещи, как:

\#([A-z0-9]+) {

, который позволит мне заменить на # prefix_ $ 1, но это не учитывает:

#id {
#id.class
#id,

и т.д..Я не могу просто заменить все # [a-z0-9], потому что он попытается захватить цвета фона и т. Д.

Мне также нужно заменить все классы, что для меня еще более запутанно.

Ответы [ 3 ]

1 голос
/ 22 августа 2011

Вы можете попробовать это [#|\.][\w]+\.?([\w\-]+\s?) это сработало на этих

#id {
#id.class {
#id, #otherId {
#class-dashed
#class_dashed
ul li:after {content: " #id.class { ";}
.class {background-color:     #fff250}
#id.class {color:#ff}

Также нашел хороший инструмент , чтобы поиграть с различными вариантами. Все еще будет проблема с цветами, но вы не можете избавиться от этого, поскольку они следуют тем же правилам, что и идентификаторы.

обновление исключая : из результатов для несоответствия цветов.

(?<![: ])[#\.][\w]+\.?([\w-]+\s?) вам понадобится движок регулярных выражений, поддерживающий отрицательный взгляд назад, не очень знакомый с php, поэтому не знаю, есть ли он, но я бы предположил, что он есть.

1 голос
/ 22 августа 2011

Вы можете искать:

\.(-?[_a-zA-Z]+[_a-zA-Z0-9-]*)[^}]+{

\#(-?[_a-zA-Z]+[_a-zA-Z0-9-]*)[^}]+{

Должен найти все ваши имена классов и идентификаторы

С RegExr используйте это:

(?<=#|\.)(-?[_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^}]+{)

Edit: Вот ссылка на тест на Google's CSS http://regexr.com? 2ugv1

0 голосов
/ 22 августа 2011

Я бы пошел с чем-то вроде этого:

/([#\.])([^\d][a-z0-9-_]+)/ Replace with
$1PREFIX_$2

Однако будьте осторожны, что он также будет ловить цвета, (если это сделано строчными буквами), я сейчас работаю над обходным решением.*

...