我需要快速为我的所有类和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
但是要注意,它也会捕捉颜色,(如果用小写字母完成(我现在正在研究一个变通方法。