【发布时间】:2018-09-06 09:50:43
【问题描述】:
我正在尝试为以下日期变体创建正则表达式模式: 示例日期变量如下:
04/20/2009-
04/20/09 4/20/094/3/09
只要在输入字符串中遇到类似的模式,就会识别与定义的正则表达式模式匹配的日期
我的方法: 我将整个日期分解为月份、日期和年份部分,并创建了正则表达式对象:
month = re.compile(r'(^0?[1-9]$)|(^1[0-2]$)').search('04').group()
day = re.compile(r'(^0?[1-9]$)|(^[12][0-
9]$)|^3[01]$').search('20').group()
year = re.compile(r'(^(19)?\d\d$)|
(^(20)\d\d$)').search('2009').group()
print(month, day, year)
单独他们工作正常,我得到了预期的输出;例如: 输入字符串: 月='04',日='20',年='2009'
O/P: 04 20 2009
面临的问题: 但是,当我将这三个部分(月、日、年)组合成一个正则表达式模式时,我遇到了错误。
date = re.compile(r'(^0?[1-9]$)|(^1[0-2]$)[/-](^0?[1-9]$)|(^[12][0-
9]$)|(^3[01]$)[/-](^(19)?\d\d$)|(^(20)\d\d$)')
output = date.search('04/20/2009').group()
错误:AttributeError Traceback(大多数 最近通话最后)在() 1 日期 = re.compile(r'(^0?[1-9]$)|(^1[0-2]$)/-|(^[12][0-9]$)|(^3 [01]$)/-|(^(20)\d\d$)') ----> 2 输出 = date.search('04/20/2009').group() AttributeError:“NoneType”对象没有属性“组”
请告诉我,哪里出了问题? 如何在单个正则表达式模式的帮助下找到整个日期(月、日、年)? 提前致谢! 总结
【问题讨论】:
-
@Fallenhero 感谢您是否还可以展示处理此问题的正确方法,除了通过告诉一切都是错误的来结束讨论!我在这样的论坛上发布了我的查询,以纠正我的错误并了解更好的编码方式
标签: regex python-3.x