Я сталкиваюсь с проблемой, когда пытаюсь разобрать строку, содержащую FSM, определенную как:
{{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
,
Любая помощь будет оценена.
Предполагая, что я правильно понял, что вам нужно, это должно сработать:
<?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>';
Других решений пока нет …