У меня есть следующий шаблон:
[\{\}].*[\{\}]
Со следующими тестовыми строками (при необходимости можно предоставить больше):
}.prop{hello:ars;} //shouldn't match
}#prop{} //should match
}.prop #prop {} //should match
Цель шаблона — найти пустые наборы правил CSS. Может ли кто-нибудь подсказать, как мне исключить совпадения с символами между вторым набором скобок? Я буду обновлять шаблон по мере приближения к решению.
редактируйте:
на http://gskinner.com/RegExr/
этот шаблон: [\}].*[\{]{1}[/}]{1}
кажется, дает желаемый результат, хотя он не работает при передаче на php по определенным причинам Я не понимаю.
редактировать:
извиняюсь, если это должен быть отдельный вопрос.
Использование шаблона в первом редактировании в php:
$pattern = "/[\}].*[\{]{1}[/}]{1}/";
preg_match_all ($pattern, $new_css, $p);
print_r($p);
Если $new_css — это строка содержимого загруженного CSS-файла, содержащего пустые наборы правил, $p никогда не заполняется. Тем не менее, я знаю, что этот шаблон в порядке. Кто-нибудь может понять, в чем проблема?
редактировать: окончательное решение
//take out other unwanted characters
$pattern = "/\}([\.#\w]\w+\s*)+{}/";
//do it twice to beat any deformation
$new_css = preg_replace ($pattern, '}', $new_css);
$new_css = preg_replace ($pattern, '}', $new_css);
Подробнее здесь: https://stackoverflow.com/questions/115 ... -css-rules