Проблема с обработкой строк регулярным выражением

ilkz

Новичок
Проблема с обработкой строк регулярным выражением

Подскажите, плиз, где грабли.
Надо вытащить из строки подобного формата:
OUTPUTS power\BIN start_limit_over end_limit_over latched_starts\BIN latched_ends\BIN pulse_width\BIN PLL_clock:inst1|PLL_clock_altpll0:inst|altpll:altpll_component|_clk0 Time_Meter:inst23|Time_Meter_lpm_counter0:inst5|lpm_counter:lpm_counter_component|cntr_enh:auto_generated|safe_q\DEC Preprocessor:inst2|inst24\DEC Preprocessor:inst2|inst40\BIN POROG\BIN;
все, что находится после слова OUTPUTS между пробелами. Ничего сложного, вроде, нет, однако составленное регулярное выражение не работает должным образом. Не могу понять где я накосячил...
И еще вопрос (в общем смысле) - почему, если я описываю класс символов, например [\w]+ и т.п., и если в конце - перед закрывающей скобкой я ставлю ЭКРАНИРОВАННЫЙ обратный слэш: [\w\\]+, то пхп ругается ошибкой Compilation failed: missing terminating ] for character class at offset ХХХ? Ведь я же экранировал слэш! Почему тогда он на него выдает ошибку?

Вот код, который обрабатывает вышеописанную строку.
PHP:
if(preg_match_all('/OUTPUTS ( ?[\w\|\:]+[\\\w]?)+;/',$data[$i],$matches)){
	print_r($matches);
}
В результате возвращается
PHP:
Array
(
    [0] => Array
        (
            ВСЯ ИСХОДНАЯ СТРОКА
        )

    [1] => Array
        (
            [0] => BIN
        )

)
-~{}~ 16.09.07 14:01:

В то же время, если класс символов описать таким образом, то ошибки не возникает: [\\\w]+. Не понимаю почему...

-~{}~ 16.09.07 14:36:

Пока что вышел из положения таким образом:
PHP:
if(preg_match('/OUTPUTS ([^;]+);/',$data[$i],$matches)){
		$matches=preg_split('/ /',$matches[1]);
		print_r($matches);
    }
Все работет, но уже из спортивного интереса все же интересно было бы составить регулярное выражение, которое бы одно и сразу делало эту работу. А также выяснить проблему с ошибкой на \\.
 

cDLEON

Онанист РНРСlub
Если используется двойная ковычка - то вместо двух слешей нужно 3 для экранирования )
Хотя причины я так понять и не смог =)
 
Сверху