如果下一个字符是特定字符,则拆分字符串,例如'abc'



我现在有一个字符串如下所示,

$string = "4WL533cba00780352524MT_FAILED(SCRNotInAllowList)                  STATUS_NOT_AVAILABLE";

我遵循在线教程显示:

(gif|jpg)   Matches either "gif" or "jpeg".

根据我的情况,我只需要在文本包含DN_或MT_ 时进行拆分

$data = preg_split("/[s,(DN_|MT_),]+/", trim($string));

输出

[0] => Array
    (
        [0] => 4WL533cba00780352524
        [1] => FAILE
        [2] => SCR
        [3] => otInAllowList
        [4] => S
        [5] => A
        [6] => US
        [7] => O
        [8] => AVAILABLE
    )

然而,我预计输出是:

[0] => Array
    (
        [0] => 4WL533cba00780352524
        [1] => MT_FAILED(SCRNotInAllowList)
        [2] => STATUS_NOT_AVAILABLE
    )

希望你们能帮我。

在正则表达式模式中,您将预期模式包装在字符类中,但无法使用交替运算符-您可能希望查看此正则表达式站点,以了解正则表达式的基本语法、常见正则表达式引擎的背景理论和扩展功能的详细解释。

在您的代码中使用

$data = preg_split("/s+|(?=DN_|MT_)/", trim($string));

模式简介:

您希望在空白序列或字符串"DN_"、"MT_"之一出现时进行拆分。在后一种情况下,您希望分割模式的匹配成为结果数组中下一个元素的一部分。因此,您将模式包含在正向前瞻运算符中,该运算符为匹配提供尾随上下文。如果此匹配后面跟有"DN_"或"MT_",则它实际上与空字符串匹配。

$string = "4WL533cba00780352524MT_FAILED(SCRNotInAllowList)                  STATUS_NOT_AVAILABLE";
$data = preg_split("/s+|(?=DN_|MT_)/", trim($string));
print_r($data);

输出

Array
(
[0] => 4WL533cba00780352524
[1] => MT_FAILED(SCRNotInAllowList)
[2] => STATUS_NOT_AVAILABLE
)

最新更新