2015-03-18 3 views
0

Я столкнулся с проблемой, когда я пытаюсь разобрать строку, содержащую FSM определяется как:PHP - синтаксического анализа CSV в массив

{{states},{symbols}, {transitions}, starting_symbol, {set of finishing states}} 

пример:

{{start, mid, end}, {'a', 'b'}, { start 'a' -> end}, start, {end}} 

В отличие от написания парсера здесь я хотел бы проанализировать это с помощью регулярных выражений.

Моя проблема заключается в понимании групп соответствия регулярных выражений и как разбить строку, такую ​​как "start, mid, end", на массив [ "start", "mid", "end" ] (при условии, что разделитель ,).

Я понимаю, что с помощью встроенных функций Csv может быть лучшая идея, но пример немного сложнее (хотя для простоты предположим, что каждый член множества может соответствовать \w.

Любая помощь будет оценена.

+3

это не выглядит как CSV-файл на все –

+0

уточнения, я только хочу, чтобы разобрать «начало, середину, конец» часть. – AoeAoe

ответ

0

Предполагая, что я правильно понял, что вам нужно, это следует сделать трюк:

<?php 

$string = "{{start, mid, end}, {'a', 'b'}, { start 'a' -> end}, start, {end}}"; 

preg_match("#\{\{(.*?)\}#", $string, $matches); 

$parts = split(',', $matches[1]); 

echo '<pre>'; 
print_r($parts); 
echo '</pre>'; 
Смежные вопросы