我有一个这样的字符串:
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}$/
答案 0 :(得分:3)
您可以使用
'~\p{L}+\s*\d{2},\s*\d{4}$~'
请参阅regex demo
<强>详情:
\p{L}+
- 一个或多个字母\s*
- 0+ whitespaces \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)?)
。要仅匹配XXth和XXIst世纪,您可以将\d{4}
替换为(?:20|19)\d{2}
。