我正在寻找能够帮助我清理大文件的正则表达式。我想改变这个:
selector {
property: value;
}
进入这个:
selector { property: value; }
包括类似的版本:
selector,
selector2 {
property: value;
}
成:
selector,
selector2 { property: value; }
但不改变:
selector {
property: value;
property2: value2;
}
基本上,我想找到property: value;
只有一个实例的地方,并改变它,但不管其他一切。
注意:可能存在用于缩进的选项卡,2个空格,4个空格等差异的实例。如果可能,我想抓住所有这些。
答案 0 :(得分:3)
正如评论中所述,正则表达式不一定是最好的方法。也就是说,这是一个经过不完全测试的正则表达式,可以帮到你。
替换:
\{\s+(\S+:)\s*([^;]+;)\s+\}
使用:
\{ $1 $2 \}
例如,这适用于Notepad ++或Sublime Text。如果您使用的是脚本语言(Perl,PHP,JavaScript等等),则可能需要将g
标志显式添加到正则表达式以替换所有匹配项,如/\{\s+(\S+:)\s*([^;]+;)\s+\}/g
答案 1 :(得分:1)
以下正则表达式可用于查找您要查找的内容:
\{\n.+?\n\}
我会在Sublime Text 2中使用此正则表达式,以便按照以下步骤清理文件:
答案 2 :(得分:1)
我想你可以这样做。
基本上,它只是获得和排除换行;
查找:\{\s*\r?\n\s*([^:\r\n]*:[^;\r\n]*;)\s*\r?\n\s*\}
替换:{ $1 }
格式化:
\{ \s* \r? \n \s* # { then newline
( [^:\r\n]* : [^;\r\n]* ; ) # (1), property: value;
\s* \r? \n \s* \} # newline then }