我在 PHP 中有一个正则表达式来匹配一些这样的文本:
第 24 次会议 - 敏捷的棕狐 [2012 年 1 月 10 日至 2012 年 9 月 26 日]
我想出的模式如下所示:
$pattern = "/(([0-9]{1,2})(st|nd|rd|th)\sMeeting\s-\s)?(.*)(\[([0-9]{1,2}\s(January|February|March|April|May|June|July|August|September|November|December)\s[0-9]{4})\sto\s([0-9]{1,2}\s(January|February|March|April|May|June|July|August|September|November|December)\s[0-9]{4})\])$/"
这似乎工作正常。
但是,我希望最后的日期部分是可选的。但是,当我添加 ? 在日期分组之后, preg_match 不再提取字符串中的日期。我怀疑 .* 正在接管,但我似乎无法理解