常规 exp = (Digits)*(A|B|DF|XY)+(Digits)+我对这种模式感到困惑真的我想在 PHP 中分隔这个字符串,有人可以帮助我我的输入可能是这样的A1234乙12391A12312A1231A 123412 一个 1231234乙 12345678912 XY 1234567890并转换成这个Array( [0] => 12 [1] => XY [2] => 1234567890)<?php$input = "12 XY 123456789";print_r(preg_split('/\d*[(A|B|DF|XY)+\d+]+/', $input, 3));//print_r(preg_split('/[\s,]+/', $input, 3));//print_r(preg_split('/\d*[\s,](A|B)+[\s,]\d+/', $input, 3));
1 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
您可以匹配并捕获数字、字母和数字:
$input = "12 XY 123456789";
if (preg_match('/^(?:(\d+)\s*)?(A|B|DF|XY)(?:\s*(\d+))?$/', $input, $matches)){
array_shift($matches);
print_r($matches);
}
^
- 字符串的开始(?:(\d+)\s*)?
- 可选序列:(\d+)
- 第 1 组:任何或更多数字\s*
- 0+ 空格
(A|B|DF|XY)
- 第 2 组:A
、B
或DF
XY
(?:\s*(\d+))?
- 可选序列:\s*
- 0+ 空格(\d+)
- 第 3 组:任何或更多数字
$
- 字符串结束。
- 1 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消