Php preg_匹配测试成功,但preg_分割失败

Php preg_匹配测试成功,但preg_分割失败,php,regex,Php,Regex,我试图测试一种方法,通过这种方法,我可以分解一个字符串,其中包含关于学术出版物的多个记录。没有什么比用有意义的分隔符分隔一条记录和下一条记录更方便的了。但我相信这是可以实现的,因为每个记录都以日期结尾,后跟逗号和空格(除非后面没有其他记录,在这种情况下,它只以日期结尾),例如“YYYY-MM-DD” 我从一个涉及字符串的简单测试开始,并确认正则表达式能够识别我正在寻找的模式: $date="2012-09-12, "; if (preg_match("/^[0-9]{4}-(0[1-9]|1[0

我试图测试一种方法,通过这种方法,我可以分解一个字符串,其中包含关于学术出版物的多个记录。没有什么比用有意义的分隔符分隔一条记录和下一条记录更方便的了。但我相信这是可以实现的,因为每个记录都以日期结尾,后跟逗号和空格(除非后面没有其他记录,在这种情况下,它只以日期结尾),例如“YYYY-MM-DD”

我从一个涉及字符串的简单测试开始,并确认正则表达式能够识别我正在寻找的模式:

$date="2012-09-12, ";
if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]), $/",$date))
    {
        echo("yes");
    }else{
        echo("no");
但是,当我尝试使用真实数据样本和preg-split()进行下一步时,分割不起作用。我无法理解为什么这个简单的测试(取自中的示例1)无法导致字符串被拆分:

<?php
$pubs="L.J. Santodonato, Y. Zhang, M. Feygenson, C.M. Parish, M.C. Gao, R.J. Weber, J.C. Neuefeind, Z. Tang, P.K. Liaw~Deviation from high-entropy configurations in the atomic distributions of a multi-principal-element alloy.~NATURE COMMUNICATIONS~6~2015~~~~0~~0~~2015-11-21, S. Liu, M.C. Gao, P.K. Liaw, Y. Zhang~Microstructures and mechanical properties of AlxCrFeNiTi 0.25 alloys.~JOURNAL OF ALLOYS AND COMPOUNDS~619~2015~610~~~0~~0~~2015-11-21";
$pubsArray = preg_split("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]), $/", $pubs);
print_r($pubsArray);
?>

在示例字符串$pubs中可以找到与相同模式匹配的数据,但我得到的只是一个包含完整字符串的单个元素的数组。关于下一步尝试什么,我已经没有主意了,如果有任何建议,我将不胜感激

但我相信这是可以实现的,因为每个记录都以日期结尾,后跟逗号和空格(除非后面没有其他记录,在这种情况下,它只以日期结尾),例如“YYYY-MM-DD”

当您试图在日期出现时分割字符串时,您可以使用一个简单的正则表达式,如
/\d{4}(-\d{2}{2}/
。由于您没有验证日期,因此不需要匹配所有月份和日期

要在
日期拆分字符串,应使用以下正则表达式


正则表达式:
/(?如果是上述字符串,您应该在日期处将两个元素拆分?此建议确实产生了预期的结果。非常感谢!我也非常感谢指向正则表达式101的链接。这看起来是一个非常有用的工具。
<?php
$pubs="L.J. Santodonato, Y. Zhang, M. Feygenson, C.M. Parish, M.C. Gao, R.J. Weber, J.C. Neuefeind, Z. Tang, P.K. Liaw~Deviation from high-entropy configurations in the atomic distributions of a multi-principal-element alloy.~NATURE COMMUNICATIONS~6~2015~~~~0~~0~~2015-11-21, S. Liu, M.C. Gao, P.K. Liaw, Y. Zhang~Microstructures and mechanical properties of AlxCrFeNiTi 0.25 alloys.~JOURNAL OF ALLOYS AND COMPOUNDS~619~2015~610~~~0~~0~~2015-11-21";
$pubsArray = preg_split("/(?<=\d{4}(-\d{2}){2}),\s*/", $pubs);
print_r($pubsArray);
?>