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