Analyse CSS par regex

Je suis de la création d'un éditeur CSS et suis en train de créer une expression régulière qui peut obtenir les données à partir d'un document CSS. Cette regex fonctionne si j'en ai un bien, mais je ne peux pas le faire fonctionner pour toutes les propriétés. Je suis en utilisant preg/syntaxe de perl en PHP.

Regex

(?<selector>[A-Za-z]+[\s]*)[\s]*{[\s]*((?<properties>[A-Za-z0-9-_]+)[\s]*:[\s]*(?<values>[A-Za-z0-9#, ]+);[\s]*)*[\s]*}

Cas de Test

body { background: #f00; font: 12px Arial; }

Résultats Attendus

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
            )
        )
)

Réel Résultat

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
        )
    )

Merci d'avance pour toute aide - cela a été source de confusion moi tout l'après-midi!

source d'informationauteur Ross