我有一个动态明文块,其中至少有一个日期格式为YYYY-MM-DD。
例如:
Lorem ipsum dolor坐下来,精神上的精神。 Suspendisse blandit neque fringilla facilisis congue。 Nunc sed libero nisi。 Mauris pretium magna non magna tincidunt,et cursus mi consectetur。 DUIS varius augue vel ligula varius pretium。
Suspendisse blandit justo nec maximus porta。 Fusce egestas nisi purus, 在venenatis leo commodo tristique。 Nam cumsan tellus lacus,a fringilla nisl viverra sed。 Aenean id eleifend ipsum,vel varius nunc。 在condimentum nisl eu arcu eleifend 1999-01-02 ultrices vel non 拉克丝。
Vivamus a mauris id mauris vehicula sollicitudin。 Suspendisse iaculis ipsum sed metus sagittis dapibus。
如何使用正则表达式查找该格式的任何日期的最后一次出现并将其保存到变量?
我认为会涉及preg_match()
。
我能提出的最接近的表达是\d\d\d\d-\d\d-\d\d(?!.*\d\d\d\d-\d\d-\d\d)
,它与该格式的任何日期相匹配。
答案 0 :(得分:3)
ContainerOptions
使用.*\K\d{4}-\d{2}-\d{2}
标志。
s
$re = '/.*\K\d{4}-\d{2}-\d{2}/s';
$str = //your string here
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
任意次数匹配任何字符(贪婪)。由于使用了.*
标记,因此它也会匹配s
。\n
重置报告的匹配的起点。任何以前消费的字符都不再包含在最终匹配中。\K
日期格式。您可以添加\d{4}-\d{2}-\d{2}
作为前缀并添加\b
,以确保您不匹配12345-12-12
(如果您选择的话,可以选择5个数字)。