为什么这个RegEx不能在PHP中工作



首先,我知道我可以得到非常相同的结果与爆炸,只是想知道为什么它不工作在PHP

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

返回

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

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

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

这个函数需要分隔符的模式

你实际上是在做一个匹配你想要的,而不是你想用什么来分割:

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

将得到$result

中的匹配项

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

如果您想使用preg split,则需要使用负向前看来获得最后的,:

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

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

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

相关内容

  • 没有找到相关文章

最新更新