我需要提取日期的格式:dd Month yyyy(2013年8月20日)。
我尝试了以下regex:

\d{2} (January|February|March|April|May|June|July|August|September|October|November|December) \d{4}

它与regex测试人员一起工作(与几个文本一起检查-2013年8月19日,星期一),但Python似乎不理解它。我得到的结果是:
>>>
['August']
>>>

有人能理解我为什么会这样吗?
谢谢您!

最佳答案

你用过re.findall?默认情况下,如果模式中至少有一个捕获组,re.findall将只返回表达式的捕获部分。
您可以通过删除每个捕获组来避免此问题,从而使re.findall返回整个匹配:

\d{2} (?:January|February|...|December) \d{4}

或者组建一个大型的抓捕小组:
(\d{2} (?:January|February|...|December) \d{4})

或者,可能更方便的是,通过使每个组件都成为捕获组:
(\d{2}) (January|February|...|December) (\d{4})

如果需要处理单独的日/月/年组件,则后一个表单更有用。

10-08 09:08