首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python正则表达式匹配第一个日期,然后第二个日期

Python正则表达式匹配第一个日期,然后第二个日期
EN

Stack Overflow用户
提问于 2014-08-27 23:10:33
回答 4查看 365关注 0票数 0

我正在使用熊猫数据帧,并希望创建到系列,开始日期和结束日期内的描述。我正在使用正则表达式来查找日期的出现次数,但似乎找不到如何在第一次约会时停止,然后继续查找第二次约会。

看这里:How to stop at first occurence of match?

得到了一个答案

代码语言:javascript
复制
(?s)(\d{1,2}/\d{1,2}/\d{2,4}).*

但这对我不起作用,我仍然捕获所有的日期,而不仅仅是第一个日期。

使用

代码语言:javascript
复制
(\d{1,2}/\d{1,2}/\d{2,4})? 

也不管用。

从本质上讲,我想要达到

代码语言:javascript
复制
pattern_generic=re.compile('(\d{1,2}\/\d{1,2}\/\d{2,4})')   #perhaps will do start and end)
report['Start Date'] = report['Description'].apply(lambda x: re.findall(pattern_start,x))
report['End Date'] = report['Description'].apply(lambda x: re.findall(pattern_end,x))

不确定这是否是查找第一个和第二个日期并将它们放入列的最佳方法。如有任何帮助/建议,欢迎光临!

编辑:

举例说明:我有一个数据框,它有一个标题为“Description”的列,其中包含各种项目,例如“从1/2/13-3/4/15购买的订阅”。我想将这两个日期捕获到两列中,开始和结束

代码语言:javascript
复制
 Description                                       Start Date     End Date
 'Purchased Subscription from 1/2/13-3/4/15'        1/2/13        3/4/15
EN

回答 4

Stack Overflow用户

发布于 2014-08-27 23:20:21

我会用这个:

代码语言:javascript
复制
(?s)\b(\d{1,2}/\d{1,2}/\d{2,4})\b-\b(\d{1,2}/\d{1,2}/\d{2,4})\b

开始日期在组%1中,结束日期在组% 2中。

票数 2
EN

Stack Overflow用户

发布于 2014-08-27 23:19:07

你可以使用下面的正则表达式,

代码语言:javascript
复制
(?s)(\d{1,2}/\d{1,2}/\d{2,4})-(\d{1,2}/\d{1,2}/\d{2,4}).*

DEMO

将组索引1中的字符分配给Start Date,将组索引2中的字符分配给End Date

代码语言:javascript
复制
>>> s = """'Purchased Subscription from 1/2/13-3/4/15'        1/2/13        3/4/15
foo 1/2/13-3/4/15'        5/2/13        6/4/15
1/2/13-3/4/15'        7/2/13        8/4/15
1/2/13-3/4/15'        9/2/13        10/4/15"""
>>> m = re.search(r'(?s)(\d{1,2}\/\d{1,2}\/\d{2,4})-(\d{1,2}\/\d{1,2}\/\d{2,4}).*', s)
>>> m.group(1)
'1/2/13'
>>> m.group(2)
'3/4/15'
>>> m = re.findall(r'(\d{1,2}\/\d{1,2}\/\d{2,4})-(\d{1,2}\/\d{1,2}\/\d{2,4}).*', s, re.DOTALL)
>>> m
[('1/2/13', '3/4/15')]
票数 0
EN

Stack Overflow用户

发布于 2014-08-27 23:22:31

代码语言:javascript
复制
  .*'\s+(\d+\/\d+\/\d+)\s+(\d+\/\d+\/\d+)

Try this.Start日期将采用group1格式,结束日期采用group2格式。

请参阅Demo:

http://regex101.com/r/zN5mL9/1

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

https://stackoverflow.com/questions/25530807

复制
相关文章

相似问题

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