为什么此 RegEx 在 PHP 中不起作用?
Why this RegEx is not working in PHP?
首先,我知道我可以用 explode 得到完全相同的结果,只是想知道为什么它在 PHP
中不起作用
preg_split('/(.+,)+(.+)/im', 'New York, NY, United States');
它returns
array (
0 => '',
1 => '',
)
为什么?应该 returns: ['New York, NY, ', 'United States']
对吧?
你实际上是在匹配你想要的东西,而不是你想用来分割的东西:
preg_match('/(.*,)+ (.*)/', $subject, $result);
会得到 $result
中的匹配项
注意:我添加了一个space并删除了多行修饰符,在你的情况下不需要。
如果要使用preg split,需要使用negative lookahead得到最后一个,
:
preg_split('/(,)(?!.*,)/i', 'New York, NY, United States');
使用 preg_split 你可以:
preg_split("/,\s/", 'New York, NY, United States');
此函数需要分隔符的模式。
为了获得数组:['New York, NY, ', 'United States']
,删除第二个量词并使用 preg_match 代替:
preg_match('/^(.+,)(.+?)$/im', 'New York, NY, United States', $match);
首先,我知道我可以用 explode 得到完全相同的结果,只是想知道为什么它在 PHP
中不起作用preg_split('/(.+,)+(.+)/im', 'New York, NY, United States');
它returns
array (
0 => '',
1 => '',
)
为什么?应该 returns: ['New York, NY, ', 'United States']
对吧?
你实际上是在匹配你想要的东西,而不是你想用来分割的东西:
preg_match('/(.*,)+ (.*)/', $subject, $result);
会得到 $result
注意:我添加了一个space并删除了多行修饰符,在你的情况下不需要。
如果要使用preg split,需要使用negative lookahead得到最后一个,
:
preg_split('/(,)(?!.*,)/i', 'New York, NY, United States');
使用 preg_split 你可以:
preg_split("/,\s/", 'New York, NY, United States');
此函数需要分隔符的模式。
为了获得数组:['New York, NY, ', 'United States']
,删除第二个量词并使用 preg_match 代替:
preg_match('/^(.+,)(.+?)$/im', 'New York, NY, United States', $match);