正则表达式 PHP 拆分数字和字符串


Regexp PHP Split number and string

我想拆分一个包含一些数字和字母的字符串。喜欢这个:

ABCd Abhe123
123ABCd Abhe
ABCd Abhe 123
123 ABCd Abhe

我试过这个:

<?php preg_split('#(?<='d)(?=[a-z])#i', "ABCd Abhe 123"); ?>

但它不起作用。数组中只有一个单元格,带有"ABCd Abhe 123"
例如,我想在单元格 0 中:数字和单元格 1:字符串:

[0] => "123",
[1] => "ABCd Abhe"

谢谢你的帮助! ;)

改用preg_match_all

preg_match_all("/('d+)*'s?([A-Za-z]+)*/", "ABCd Abhe 123" $match);

对于每场比赛:

  • $match[i][0]包含匹配的细分受众群
  • $match[i][1]包含数字
  • $match[i][2]包含字母

(请参阅此处进行正则表达式测试)

然后将它们放在一个数组中

for($i = 0; $i < count($match); $i++)
{
    if($match[i][1] != "")
        $numbers[] = $match[1];
    if($match[i][2] != "")
        $letters[] = $match[2];
}
<小时 />

编辑1

我已经更新了正则表达式。它现在查找数字或字母,带或不带空格。

<小时 />

编辑2

正则表达式是正确的,但数组处理不正确。使用 preg_match_all ,则$match是一个包含数组的数组,如下所示:

Array
(
    [0] => Array
        (
            [0] => Abc
            [1] =>  aaa
            [2] => 25
        )
    [1] => Array
        (
            [0] => 
            [1] => 
            [2] => 25
        )
    [2] => Array
        (
            [0] => Abc
            [1] => aaa
            [2] => 
        )
)

也许是这样的?

$numbers = preg_replace('/[^'d]/', '', $input);
$letters = preg_replace('/'d/', '', $input);