我正在创建一个 CSS 编辑器,并试图创建一个可以从 CSS 文档中获取数据的正则表达式。如果我有一个属性,但我无法让它适用于所有属性,则此正则表达式有效。我在 PHP 中使用 preg/perl 语法。
正则表达式
(?<selector>[A-Za-z]+[\s]*)[\s]*{[\s]*((?<properties>[A-Za-z0-9-_]+)[\s]*:[\s]*(?<values>[A-Za-z0-9#, ]+);[\s]*)*[\s]*}
测试用例
body { background: #f00; font: 12px Arial; }
预期结果
Array(
[0] => Array(
[0] => body { background: #f00; font: 12px Arial; }
[selector] => Array(
[0] => body
)
[1] => Array(
[0] => body
)
[2] => font: 12px Arial;
[properties] => Array(
[0] => font
)
[3] => Array(
[0] => font
)
[values] => Array(
[0] => 12px Arial
[1] => background: #f00
)
[4] => Array(
[0] => 12px Arial
[1] => background: #f00
)
)
)
实际结果
Array(
[0] => Array
(
[0] => body { background: #f00; font: 12px Arial; }
[selector] => body
[1] => body
[2] => font: 12px Arial;
[properties] => font
[3] => font
[values] => 12px Arial
[4] => 12px Arial
)
)
提前感谢您的帮助 - 这让我整个下午都感到困惑!