簡體   English   中英

Perl正則表達式解析CSS

[英]Perl regex to parse CSS

我有一個典型的CSS文件格式:

.success {
    color: #8FA442;
    border: 1px solid #C2D288;
}
.error {
    color: #b3696c;
    border: 1px solid #f7c7c9;
}

我想匹配每個樣式名稱以及{}中的內容。 我擁有{}部分並能夠輕松解析內容,但是問題是樣式名稱可以是數組(例如#contactform .input, .textarea ),並且我想捕獲整個內容,實際上是上一個結束}。

我嘗試過的是

m/\\}(.+)(\\{.+?\\})/g

但這會抓取整個文件。 如果我做

$doc =~ m/(\\w+)\\s+(\\{.+?\\})/g

可以很好地捕獲每個樣式{},但只能捕獲名稱的最后一個標記,因此對於#contactform .input, .textarea ,它將僅捕獲.textarea

該怎么辦?

使用CSS :: DOM代替。 簡單的正則表達式模式不太可能證明與任務相同。

#!/usr/bin/env perl

use 5.012;
use strict;
use warnings;

use CSS::DOM;

my $css = my $sheet = CSS::DOM::parse(do {local $/; <DATA>});
my $rules = $css->cssRules;

for my $rule ( @$rules ) {
    say $rule->selectorText;
}

__DATA__
#contactform  .success {
    color: #8FA442;
    border: 1px solid #C2D288;
}
.error {
    color: #b3696c;
    border: 1px solid #f7c7c9;
}

或者,您可以使用一個叫做CSS的CSS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM