我正在使用 NotepadQQ(Notepadd++ 的 Linux 风格)并且有一个超过 5,500 行长的 CSS 文件。我对正则表达式的了解仅限于最基础的内容。
我需要搜索并删除不包含某些十六进制颜色代码的所有内容。
CSS 示例如下所示:
section[id*='rss-'] ul>li .rssSummary {
color:#353535;
padding-left:10px
}
.follow_me .side_body ul li a.sm {
-webkit-transition:background,.5s,ease;
-moz-transition:background,.5s,ease;
transition:background,.5s,ease;
border-radius:50%;
border:3px solid #363b37;
display:block;
height:57px;
margin:0 10px 10px 0;
text-align:center;
width:57px
}
.follow_me .side_body ul li a.sm span {
color:#363b37;
display:block;
font-family:'squared-icomoon';
font-size:40px;
height:57px;
line-height:57px;
width:57px
}
.follow_me .side_body ul li a.fb:hover {
border-color:#4c698c !important;
background:#4c698c
}
.follow_me .side_body ul li a.twitter:hover {
border-color:#00aced !important;
background:#00aced
}
但必须如此
.follow_me .side_body ul li a.sm {
border:3px solid #363b37;
}
.follow_me .side_body ul li a.sm span {
color:#363b37;
}
.follow_me .side_body ul li a.fb:hover {
border-color:#4c698c !important;
background:#4c698c
}
如果选择器包含任何具有特定颜色的属性线(#363b37
、#74a5bf
、#6c9ab2
、#6995ad
、#6691a8
或 #4c698c
),选择器以及那些属性和值应该保留。
如果选择器不包含任何这些颜色值,则应将其整个删除。
如果属性不包含任何这些颜色值,则应删除整行。
是否可以在搜索和替换中使用正则表达式?如果可以,如何实现? TIA!
最佳答案
如果您在 Linux 上工作,您可以使用以下使用 awk
命令的快速但粗略的解决方案来完成此任务:
awk '/{/{buffer=$0; inside=1;}{if(inside){if($0 ~ /#[abcdefABCDEF0-9]+/)buffer=buffer ORS $0}else print}/}/{inside=0;print buffer ORS "}";}' input.css
section[id*='rss-'] ul>li .rssSummary {
color:#353535;
}
.follow_me .side_body ul li a.sm {
border:3px solid #363b37;
}
.follow_me .side_body ul li a.sm span {
color:#363b37;
}
.follow_me .side_body ul li a.fb:hover {
border-color:#4c698c !important;
background:#4c698c
}
.follow_me .side_body ul li a.twitter:hover {
border-color:#00aced !important;
background:#00aced
}
解释:
/{/{缓冲区=$0; inside=1;}
当到达包含{
的行时重置缓冲区并将inside
设置为1
。{if(inside){if($0 ~/#[abcdefABCDEF0-9]+/)buffer=buffer ORS $0}else print}
如果 inside 为 1,则检查该行是否包含颜色代码(hex
仅在示例中考虑,但可以适应RGB
),如果是,则将其添加到缓冲区,如果我们不是“里面
”只是打印行。/}/{inside=0;print buffer ORS "}";
当我们到达右括号时,我们打印缓冲区的内容- 然后您可以将输出重定向到另一个 css 文件。
关于css - 正则表达式搜索替换 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50710746/