Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果下一个字符是特定字符,则拆分字符串,例如';abc&x27;_Php_Regex - Fatal编程技术网

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引擎的复杂性是公共知识,许多人知道如何在没有您指导的情况下访问、理解和应用。关于这场争论的任何进一步讨论,我建议转到聊天室。是的,你在我的回答中添加了解释,这是正确的。让我提醒您,在您复制/粘贴解决方案之前,您的解决方案是什么,而不参考原始解决方案。