我目前有一个字符串,如下所示
$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
)
希望你们能帮助我。
答案 0 :(得分:4)
$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
)
答案 1 :(得分:4)
在你的正则表达式模式中,你将预期的模式包装在一个字符类中并且无法使用交替操作符 - 你可能希望看一下this regex site来详细解释正则表达式的基本语法,背景理论普通正则表达式引擎中的扩展功能。
在您的代码中使用
$data = preg_split("/\s+|(?=DN_|MT_)/", trim($string));
模式的简要说明:
你想要在空格的序列上或在其中一个字符串&n; 39,' MT _'的出现时分割。在后一种情况下,您希望拆分模式的匹配是结果数组中下一个元素的一部分。因此,您将模式包含在正向前瞻操作符中,该操作符为匹配提供尾随上下文。如果此匹配后跟' DN _'有效,则匹配空字符串。或者' MT _'。