我在PHP中有一个类似“啤酒派对2011/2012”的字符串。
我仍然无法想象如何将这些年和句子分成两个不同的数组?像这样:
$arr[0] = the beer party;
$arr[1] = 2011/2012 or if its just 2011 then $arr[1] = 2011;
我已尝试\d+
和\S+\s+
,但不知道如何结合使用它。
答案 0 :(得分:3)
preg_match('/(.*?)\s?(\d{4}(?:\/\d{4})*)$/', $yourString, $matches);
$matches[1]
包含句子$matches[2]
包含日期。
答案 1 :(得分:1)
我会试试正则表达式“(。*?)([\ d \ /] +)”或类似的。
将它分开是:
(。*?) - 第一个捕获组, ungreedy 方式中的任何字符。 [\ d \ /] - 数字或文字“/”(斜杠)。这是为了捕捉像2011 * / * 2012这样的东西。 ([\ d \ /] +) - 第二个捕获组捕获前一个语句。
如果第一个捕获组是贪婪的,它也可以捕获数字文字。由于它是不合适的,它将停止允许最长的贪婪捕获者,这是第二个捕获组。
有关正则表达式中贪婪的更多信息,您可以查看http://www.skdevelopment.com/php-regular-expressions.php。
希望这有帮助!
答案 2 :(得分:0)
如果您的目标字符串始终采用该格式(即以斜杠分隔的一个或多个4位数年份结束),那么您可以使用此
preg_match( '/(\d{4}(\/\d{4})*)$/', $string, $matches );
这将匹配您的字符串中格式为“YYYY”或“YYYY / YYYY”的任何字符串,然后您可以将其删除以获得这两个部分。