0

我想从字符串中拆分数字和字母但有问题。
输入如:
输入示例 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)

4

2 回答 2

3

您还需要添加一个否定的look-behind,以确保选择的空字符串不在两位数的中间。

目前对于 string A725,您的正则表达式将在7,2和之前的空字符串上拆分5,因为它们都后跟至少一位数字。

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

preg_split('/(?<!\d)(?=\d+)/', $input)
于 2013-10-10T19:55:15.507 回答
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"
}
于 2013-10-10T19:57:39.707 回答