PHP 字符串分割规则

常规 exp = (Digits)*(A|B|DF|XY)+(Digits)+

我对这种模式感到困惑真的我想在 PHP 中分隔这个字符串,有人可以帮助我我的输入可能是这样的

  1. A1234

  2. 乙1239

  3. 1A123

  4. 12A123

  5. 1A 1234

  6. 12 一个 123

  7. 1234乙 123456789

  8. 12 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));


Cats萌萌
浏览 133回答 1
1回答

红颜莎娜

您可以匹配并捕获数字、字母和数字:$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或DFXY(?:\s*(\d+))?- 可选序列:\s*- 0+ 空格(\d+)- 第 3 组:任何或更多数字$- 字符串结束。
打开App,查看更多内容
随时随地看视频慕课网APP