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

标签 php regex split match

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

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] 包含字母

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

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

for($i = 0; $i < count($match); $i++)
{
    if($match[i][1] != "")
        $numbers[] = $match[1];

    if($match[i][2] != "")
        $letters[] = $match[2];
}

编辑1

我已经更新了 the regex .它现在查找数字或字母,有或没有空格。


编辑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] => 
        )

)

关于php - 正则表达式 PHP 拆分数字和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19515255/

相关文章:

php随机mysql数据

php - 如何使用 PHP 找到图像的 "majority colors"?

php - $_POST 没有从表单中获取值

php - 如何检查字符串是否包含任何语言的字母?

javascript - 正则表达式从电话号码中提取两位数字

c# - 使用 iTextsharp 将 PDF 拆分为多个 PDF

c++ - 使用迭代器遍历数组

php - 存储过程的替代品

java - 正则表达式模式与我无法遵循的模式之一相匹配?

powershell - 使用PDFTK将PDF分成多页?