如何从 PHP 中的 preg_split() 函数中提取正则表达式值

How to extract regex value from preg_split() function in PHP

如果我使用 preg_split() 函数,例如:

$string = 'products{id,name},articles{title,text}';
$arr = preg_split('/\}\,(\w)/', $string);
print_r($arr);

我收到以下结果:

Array ( [0] => products{id,name [1] => rticles{title,text} )

如何接收完整的单词 文章 即提取正则表达式模式的值?

ps。如果可能的话

您可以拆分匹配花括号,清除匹配缓冲区。然后匹配逗号并使用正向先行断言右侧的单词字符而不是匹配它。

{[^{}]*}\K,(?=\w)

模式匹配:

  • { 匹配 {
  • [^{}]* 匹配除 {}
  • 之外的任何字符 0+ 次
  • } 匹配 }
  • \K,忘记什么是匹配到现在,匹配一个逗号
  • (?=\w)正向前瞻,断言直接右边的是单词字符

Regex demo | Php demo

$string = 'products{id,name},articles{title,text}';
$arr = preg_split('/{[^{}]*}\K,(?=\w)/', $string);
print_r($arr);

输出

Array
(
    [0] => products{id,name}
    [1] => articles{title,text}
)