Regex: получить рекурсивные скобки с префиксами - PullRequest
0 голосов
/ 30 ноября 2018

Пожалуйста, какой правильный код php, используя шаблон регулярных выражений, чтобы получить $result из $string?

$string = 'xmlns(ns=http://testurl.com/now)xpointer(//section/datePublished/text())';
preg_match($regex, $string, $result);

Вывод:

$result = array(
    'xmlns' => 'ns=http://testurl.com/now',
    'xpointer' => '//section/datePublished/text()'
);

Скобки могут бытьрекурсивный (как text()).

1 Ответ

0 голосов
/ 30 ноября 2018

Используйте /(\w+)\((.*?)\)(?=\w+\(|$)/ шаблон регулярного выражения, который соответствует любой строке перед круглыми скобками и строка в () после нее.

preg_match_all("/(\w+)\((.*?)\)(?=\w+\(|$)/", $string, $m);
$result = array_combine($m[1], $m[2]);

Проверьте результат в demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...