我现在有一个字符串如下所示,
$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
)