正则表达式找到所有不以&#34 ;;"结尾的CSS规则

时间:2014-08-21 12:02:15

标签: css regex

我试图编写正则表达式来查找CSS文件中最后没有分号的所有规则:

.abc {
    height: 100%;
    margin: auto;
    text-align: center /* <-- like this one */
    width: 100%;
}

我已尝试过此[^;\{\}]\n,但未将{}排除在搜索范围之外。有什么想法吗?

3 个答案:

答案 0 :(得分:-1)

您需要的是CSS解析器。

但是,如果这是一次性工作,并且您的正则表达式引擎支持lookbehinds,则可以使用此正则表达式:

^.*(?<![;{}])$

<强>可视化:

Debuggex.com

(?<![;{}])是一个负面的背后隐喻,断言该行应该以不是;{}的字符结尾。

请注意,如果一个CSS块被多个类/ id使用,或者每个class / id被换行符分隔,那么正则表达式远非完美而且无法正确匹配。

RegEx Demo

答案 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

运行该文件