正则表达式从字母中分割数字

时间:2013-10-10 19:53:37

标签: php regex

我想从字符串中拆分数字和字母,但有问题 输入如:
输入示例1:A5
输入示例2:C16
输入示例3:A725
输入示例4:X05
结果必须是:
结果示例1:'A','5'
结果示例2:'C','16'
结果示例3:'A','725'
结果示例4:'X','05'

我尝试使用belo正则表达式,但是没有给出好结果:
preg_split('/(?=\d+)/', $input)

2 个答案:

答案 0 :(得分:3)

您还需要添加一个负面的后视,以确保所选的空字符串不在两位数的中间位置。

目前,对于字符串A725,您的正则表达式将在725之前拆分空字符串,因为所有字符串后跟至少一位数字

您可以使用此正则表达式:

preg_split('/(?<!\d)(?=\d+)/', $input)

答案 1 :(得分:0)

您可以使用:

$s = 'A5,C16,A725,X05';
if (preg_match_all("~(?>[a-z]+|\d+)~i", $s, $arr))
   var_dump($arr[0]);

给出:

array(8) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "5"
  [2]=>
  string(1) "C"
  [3]=>
  string(2) "16"
  [4]=>
  string(1) "A"
  [5]=>
  string(3) "725"
  [6]=>
  string(1) "X"
  [7]=>
  string(2) "05"
}