我有一个这样的字符串:
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}
。