Php 如果下一个字符是特定字符,则拆分字符串,例如';abc&x27;
我现在有一个字符串,如下所示Php 如果下一个字符是特定字符,则拆分字符串,例如';abc&x27;,php,regex,Php,Regex,我现在有一个字符串,如下所示 $string = "4WL533cba00780352524MT_FAILED(SCRNotInAllowList) STATUS_NOT_AVAILABLE"; 我关注了在线教程: (gif|jpg) Matches either "gif" or "jpeg". 在我的例子中,我只需要在文本包含DN_uu或MT时进行拆分_ $data = preg_split("/[\s,(DN_|MT_),]+/", trim($s
$string = "4WL533cba00780352524MT_FAILED(SCRNotInAllowList) STATUS_NOT_AVAILABLE";
我关注了在线教程:
(gif|jpg) Matches either "gif" or "jpeg".
在我的例子中,我只需要在文本包含DN_uu或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
)
希望你们能帮我
$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
)
在您的正则表达式模式中,您将所需的模式包装在字符类中,但没有使用交替运算符-您可能希望了解正则表达式的基本语法、背景理论和常见正则表达式引擎中的扩展功能的详细说明 在代码使用中
$data = preg_split("/\s+|(?=DN_|MT_)/", trim($string));
模式的简要说明:
您希望在空格序列处或在出现字符串“DN_u”、“MT_u”时拆分。在后一种情况下,您希望分割模式的匹配成为结果数组中下一个元素的一部分。因此,您可以将该模式包含在正向前瞻操作符中,该操作符为匹配提供后续上下文。如果此匹配后面跟有'DN_uu'或'MT_uu',则有效地匹配空字符串。谢谢您的帮助。我希望那里的大多数程序员都会遇到和我一样的问题。想知道你是如何找到这个解决方案的。哦,我现在明白了;您确实复制/粘贴了我的答案。:)@mpapec独立于您,与您似乎暗示的相反,尽管仅在第二次尝试时匹配OP的规范(没有双关语)。否则,我觉得我们的答案完全不同,可以共存(特别是你没有注释原始的解决方案)。@mpapec刚刚注意到你的第二句话,这是不合理和不恰当的。请注意,regex引擎的复杂性是公共知识,许多人知道如何在没有您指导的情况下访问、理解和应用。关于这场争论的任何进一步讨论,我建议转到聊天室。是的,你在我的回答中添加了解释,这是正确的。让我提醒您,在您复制/粘贴解决方案之前,您的解决方案是什么,而不参考原始解决方案。