php - 在非字母数字字符以及数字和非数字之间的位置上拆分字符串

标签 php regex string split preg-split

我正在尝试通过非字母数字定界字符以及数字和非数字的交替来拆分字符串。最终结果应该是一个由字母字符串和数字字符串组成的平面数组。

我正在使用 PHP,并且想使用 REGEX。

例子:

  • ES-3810/24MX 应该变成 ['ES', '3810', '24', 'MX']
  • CISCO1538M 应该变成 ['CISCO' , '1538', 'M']

输入文件序列可以是 DIGITS 或 ALPHA。

分隔符可以是非 ALPHA 和非 DIGIT 字符,以及 DIGIT 序列与 APLHA 序列之间的变化,反之亦然。

最佳答案

匹配正则表达式所有出现的命令是 preg_match_all(),它输出一个多维结果数组。正则表达式非常简单...任何数字 ([0-9]) 一次或多次 (+) 或 (|) 任何字母 ([A-z]) 一次或多次 (+)。请注意大写 A 和小写 z 以包括所有大写和小写字母。

为方便起见,包含了 textarea 和 php 标记,因此您可以放入 php 文件并查看结果。

<textarea style="width:400px; height:400px;">
<?php

foreach( array(
        "ES-3810/24MX",
        "CISCO1538M",
        "123ABC-ThatsHowEasy"
    ) as $string ){

    // get all matches into an array
    preg_match_all("/[0-9]+|[[:upper:][:lower:]]+/",$string,$matches);

    // it is the 0th match that you are interested in...
    print_r( $matches[0] );

}

?>
</textarea>

在文本区域中输出:

Array
(
    [0] => ES
    [1] => 3810
    [2] => 24
    [3] => MX
)
Array
(
    [0] => CISCO
    [1] => 1538
    [2] => M
)
Array
(
    [0] => 123
    [1] => ABC
    [2] => ThatsHowEasy
)

关于php - 在非字母数字字符以及数字和非数字之间的位置上拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373469/

相关文章:

php - 如何打印latin1数据库中的UTF-8数据?

php - 使用 PHP 从 Bootstrap Select 获取多选数据

java - "Should I use multiple indices in Solr?"和其他一些快速 Q

c - 在 C 中将 double 转换为 char* 的缓冲区大小

javascript - 在两个不同或相同设备的不同网络浏览器中打开的两个 Controller 之间的通信

java - 将 Javascript 正则表达式转换为 Java 语法

regex - 从文本行获取 bash 中的所有变量

python - 如何清理网址中的用户名

ruby - 如何在 Ruby 中 %w[text] 不包含\n它换行的地方

php - 按计算列循环时对数据排序