有一种快速的方法可以将前缀添加到所有CSS类&;ID';s


There a quick way to add prefixes to all CSS classes & ID's?

我需要快速为我的所有类和ID添加前缀,这是一个相当大的CSS文件。我在想一个快速正则表达式字符串,但到目前为止我失败了。有什么想法吗?

我试过一些简单的东西,比如:

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

这将允许我用#prefix_$1替换,但它不考虑:

#id {
#id.class
#id,

等等。我不能只是替换所有的#[a-z0-9],因为它会试图抓取背景颜色等等。

我还需要替换所有的类,这对我来说更令人困惑。

您可以搜索:

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

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

应该找到你所有的类名和id名

使用RegExr,使用此:

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

编辑:以下是谷歌CSS测试的链接http://regexr.com?2ugv1

你可以试试这个[#|'.]['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}

还找到了一个很好的工具来玩不同的选项。颜色仍然会有问题,但你无法真正解决这个问题,因为它们遵循与id相同的规则。

更新从结果中排除CCD_ 5以不匹配颜色。

(?<![: ])[#'.]['w]+'.?(['w-]+'s?)您需要一个支持负查找的regex引擎,对php不太熟悉,所以不知道它是否有,但我想它有。

它适用于我的样式表中的所有案例;

查找

(['.])([^'d][a-z0-9-_]+[^{])

更换

$1prefix .$2

我会选择这样的东西:

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

但是要注意,它也会捕捉颜色,(如果用小写字母完成(我现在正在研究一个变通方法。