在PHP中,如何为用逗号分隔的解析数学表达式编写正则表达式

在PHP中,如何为用逗号分隔的解析数学表达式编写正则表达式,php,regex,Php,Regex,我有这个字符串a[b,c,d],e(f),g(h+I)=j,a+c=g(e) 如何编写正则表达式将其解析为如下数组 => Array [1] => a [2] => [b,c,d] [3] => e(f) [4] => g(h + i) = j [5] => a + c = g(e) 提前谢谢 /(\[[^]]+\]|[^,]+)/g 使用preg\u match\u all获取匹配项 以下regexp为

我有这个字符串a[b,c,d],e(f),g(h+I)=j,a+c=g(e)

如何编写正则表达式将其解析为如下数组

=> Array
     [1] => a
     [2] => [b,c,d]
     [3] => e(f)
     [4] => g(h + i) = j
     [5] => a + c = g(e)
提前谢谢

/(\[[^]]+\]|[^,]+)/g

使用
preg\u match\u all
获取匹配项


以下regexp为数组中的每个条目返回一个匹配项

/(?<=^|,)(?:([^\[\],]*)|(\[([^\[\]]*)\]))(?=$|,)/g

/(?考虑到你有将近3k的代表,你应该知道不应该发布一个“gimme-teh-codez”问题…这似乎是错误的方法,为什么你不能更改数据?你所需要的只是在第一个逗号之后有一个空格。我字符串中的空格并不重要。因此,它可以是每个地方,而不仅仅是在第一个逗号之后。嵌套结构是否像,[b,[c,d],e]一种可能性?像a,b,c,d这样的空条目或其他边缘情况如何?-尽管有目前的答案,要形成合适的表达式,人们需要知道可以对输入做出哪些假设。你应该使用
[^]+
而不是
+
,否则你会在
[a,b],c[d]中匹配太多(虽然我们对可能的输入一无所知。但我们对可能的输入一无所知。好的一点,编辑了答案。我修剪了所有空间并在下面使用了。我修剪了所有空间,并在下面重新用于以下的扩展案例,用于以下RE。虽然我们对可能输入的可能输入的情况一无所知。虽然我们对可能输入的可能输入一无所知。虽然我们对可能的输入一无所知…但我们对可能的情况一无所知…我们对可能的输入。虽然我们对所有空间进行了裁剪。我修剪了所有空间和使用了以下RE以下重新用于以下重新用于以下的扩展案例,用于以下的扩展案例,例如以下的扩展案例,如(a、b、b、b、b,我修剪所有空间和(a、b、b、b、b、b、b、b所有空间和以下所有空间和以下的空间和以下用于以下重新用于以下重新用于以下用于以下用于以下的扩展案例,用于以下的扩展案例,为扩展案例,例如(a、以下的扩展案例,如(a、b以下为(a、b,为(a、b,R)|)+(?R)|)*(?R)|)\/(?R)|)|)|你的回答也解决了我的问题。