我正在尝试通过非字母数字定界字符以及数字和非数字的交替来拆分字符串。最终结果应该是一个由字母字符串和数字字符串组成的平面数组。
我正在使用 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/