为什么这个RegEx不能用于PHP?

时间:2016-08-11 08:20:13

标签: php preg-split

首先,我知道我可以通过爆炸获得相同的结果,只是想知道为什么它不能在PHP中工作

preg_split('/(.+,)+(.+)/im', 'New York, NY, United States');

返回

array (
  0 => '',
  1 => '',
)

为什么呢?它应该返回:['New York, NY, ', 'United States']对吧?

3 个答案:

答案 0 :(得分:1)

您实际上正在根据自己的需要进行匹配,而不是根据您要分割的内容进行匹配:

preg_match('/(.*,)+ (.*)/', $subject, $result);

会在$result

中获得匹配

注意:我添加了一个空格并删除了多行修饰符,在您的情况下不需要。

如果您想使用preg split,则需要使用否定前瞻来获取最后一个,

preg_split('/(,)(?!.*,)/i', 'New York, NY, United States');

答案 1 :(得分:1)

使用preg_split可以: preg_split("/,\s/", 'New York, NY, United States');

此功能需要分隔符的模式。

答案 2 :(得分:0)

为了获得数组:['New York, NY, ', 'United States'],删除第二个量词并改为使用preg_match:

preg_match('/^(.+,)(.+?)$/im', 'New York, NY, United States', $match);