PHP preg_match_all:提取逗号分隔列表

PHP preg_match_all:提取逗号分隔列表,php,regex,Php,Regex,例如,我有以下字符串: {WIDGET_TEST('abc','456')} 我希望能够使用preg_match_all返回逗号分隔的参数数组 有人能帮我找到我需要的正则表达式吗 我已经尝试过了,下面的查询返回(a,b): 但是我要努力把这个结果作为一个数组,当我引入撇号时,正则表达式就失效了 编辑 使用以下命令: preg_match_all('/(\'[a-zA-Z0-9,]+\')/', '{WIDGET_TEST('variable1','b')}', $arguments); 我得

例如,我有以下字符串:

{WIDGET_TEST('abc','456')}
我希望能够使用preg_match_all返回逗号分隔的参数数组

有人能帮我找到我需要的正则表达式吗

我已经尝试过了,下面的查询返回
(a,b)

但是我要努力把这个结果作为一个数组,当我引入撇号时,正则表达式就失效了

编辑 使用以下命令:

preg_match_all('/(\'[a-zA-Z0-9,]+\')/', '{WIDGET_TEST('variable1','b')}', $arguments);
我得到:

array
  0 => 
    array
      0 => string ''variable1'' (length=11)
      1 => string ''b'' (length=3)
  1 => 
    array
      0 => string ''variable1'' (length=11)
      1 => string ''b'' (length=3)

因此,相信我已经做到了一部分…

我认为如果您尝试以下正则表达式,它应该可以满足您的需要:

preg_match_all('/([a-zA-Z0-9_]+)/', '{WIDGET_TEST(\'variable1\', \'b\')}', $classname);

它应该从输入字符串返回由“abcdEDFGHJ123”构造的字符串。坦率地说,当字符串从此组合中断开时,它将返回一个新结果。

由于语法的复杂性,如果没有诸如unescaped
内单引号等警告,这无法在单个正则表达式中可靠地解析。我建议删减并包括括号,然后分别解析参数。谢谢,随着我的进步,我已经更新了我的答案。。。
preg_match_all('/([a-zA-Z0-9_]+)/', '{WIDGET_TEST(\'variable1\', \'b\')}', $classname);