我试图编写正则表达式来查找CSS文件中最后没有分号的所有规则:
.abc {
height: 100%;
margin: auto;
text-align: center /* <-- like this one */
width: 100%;
}
我已尝试过此[^;\{\}]\n
,但未将{
和}
排除在搜索范围之外。有什么想法吗?
答案 0 :(得分:-1)
但是,如果这是一次性工作,并且您的正则表达式引擎支持lookbehinds,则可以使用此正则表达式:
^.*(?<![;{}])$
<强>可视化:强>
(?<![;{}])
是一个负面的背后隐喻,断言该行应该以不是;
,{
或}
的字符结尾。
请注意,如果一个CSS块被多个类/ id使用,或者每个class / id被换行符分隔,那么正则表达式远非完美而且无法正确匹配。
答案 1 :(得分:-1)
在perl中,您可以轻松地执行此操作, e.g:
#!/usr/bin/perl
# open your file
open(FILE,"filename.css");
my @fileLines = <FILE>;
close FILE;
my $lineCount=1;
# check all lines of your file
foreach my $line(@fileLines){
# erase endline spaces
$line=~ s/\s+$//;
# erase begin of line
$line=~ s/^\s+//;
# simple perl regex, it doesn't watch for comments
if($line !~ /\;$/ && $line !~ /{$/ && $line !~/}$/){
print $lineCount.':'.$line.'\n';
}
$lineCount++;
}
这个小程序会向你显示不是';'的行。
答案 2 :(得分:-2)
您可以通过http://csslint.net
运行该文件