Regex获取日期2016年8月22日


regex get date august 22, 2016?

我有一个这样的字符串:

some text August 22, 2016

我只想得到日期- august 22, 2016 .

日期总是在字符串的末尾。

我试过这样做…但是没有成功……

$date2 = preg_match('/'b(.*?)'b&'/'d{2},'b'/'d{4}$/', $string, $date2);
/'b(.*?)'b&'/'d{2},'b'/'d{4}$/

您可以使用

'~'p{L}+'s*'d{2},'s*'d{4}$~'

查看regex演示

:

  • 'p{L}+ - 1个或多个字母
  • 's* - 0+空白
  • 'd{2} - 2位
  • , -逗号
  • 's* - 0+ whitespaces
  • 'd{4} - 4位
  • $ -字符串结束

请注意,为了进一步精确地执行此操作,您可能需要将'p{L}替换为枚举所有月份的替代组,例如可以进一步改进/增强的(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|Jule?|Aug(?:ust)?|Sep(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)。如果只匹配第20世纪和第21世纪,可以将'd{4}替换为(?:20|19)'d{2}