Sublime 正则的问题,清除没用的css。

我想用正则删掉除 background-image 以外的css。

我自己写了一个 \.(.*)\{(.*)(?:background-image:\ url\(\"(.*)\"\))(.*)\} 但是问题是,如果是整行的css 可以替换,如果有换行符就不行来。

不行

.temp {
  height: 789px;
  width: 789px;
  background-image:url("/img/bg.jpg");
  background-color: #fff;
}

可行

.temp { height: 789px; width: 789px; background-image:url("/img/bg.jpg"); background-color: #fff; }

想请教一下大神怎么办,因为内容很多,手动完成基本不靠谱。

阅读 5.9k
2 个回答
Find: ^(.*?\{)(?:[^\{\}])*?(background-image.*?;)(?:[^ ]| )*?\}
Repl: \1\2}

弄了好长时间,想要一次正则解决问题,但是真心能力不够。最后还是用了两次
第一次(把所有selector{含有background-image}的转换为selector{background-image..}):

reg:([^\}\{]*?\{)[^\}\{]*?(background-image[\s\S]*?:[\s\S]*?url\([\s\S]*?\))[\s\S]*?(\})
replace:$1$2$3

第二次(去掉所有不是selector{background-image}的css)

reg:[^\}\{]*?\{(?!background-image)[\s\S]*?\}
replace:

附上我测试的截图:
初始:图片描述

第一次完成:图片描述

第二次完成:图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进