首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >抛出AttributeError的Python正则表达式:'NoneType‘对象没有属性'group’

抛出AttributeError的Python正则表达式:'NoneType‘对象没有属性'group’
EN

Stack Overflow用户
提问于 2018-09-06 09:50:43
回答 1查看 148关注 0票数 0

我试图为以下日期变体创建regex模式:示例日期变体如下所示:

  • 04/20/2009
  • 04/20/09
  • 4/20/09
  • 4/3/09

每当在输入字符串中遇到类似的模式时,将识别与定义的regex模式相匹配的日期。

我的方法:将整个日期分解为月份、日期和年份部分,并创建regex对象:

代码语言:javascript
运行
复制
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

所面临的问题:但是当我将这三个部分(月、日、年)合并为一个正则表达式时,我会出错。

代码语言:javascript
运行
复制
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()

错误: re.compile(r'(^0?1-9$)|(^10-2$)/-|(^12$)|(^301$)/-|(^(20)\d\d$)') = AttributeError

请告诉我,哪里出了问题?如何使用单个正则表达式模式来查找整个日期(月、日、年)?提前感谢!求和

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-06 14:46:49

^表示行的开始(带有多行标志)或字符串的开始,而$表示行/字符串的结束。因此,将其添加到正则表达式的所有部分将导致不匹配。

此外,您希望只匹配分组的日/月/年。

尝试:^(0?[1-9]|1[0-2])[\/-](0?[1-9]|[12][0-9]|3[01])[\/-]((?:19)?\d\d|(?:20)\d\d)$

请参阅:https://regex101.com/r/eZ2Kx1/1/

特别要注意的是:(?:19)(?:20)是非捕获组。

但这只是判罚的一部分。我不知道Python,但我想匹配是完全匹配的,所以您可能需要在这里进行更多的编程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52201334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档