首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RegEx从电子邮件中获取日期

使用RegEx从电子邮件中获取日期
EN

Stack Overflow用户
提问于 2016-12-09 17:43:57
回答 2查看 58关注 0票数 2

以下是来自3封不同邮件的3段片段:

代码语言:javascript
复制
1) Subject: FW: NEFS 11 fish for lease
   From: Claire Fitz-Gerald 
   Date: 11/15/2013 3:02 PM

2) Subject: FW: NEFS 11 and 12 fish for lease
   From: Claire Fitz-Gerald 
   Date: 11/11/2013 4:09 PM

3) Subject: FW: NEFS 11 fish for lease
   From: Claire Fitz-Gerald 
   Date: 12/5/2013 4:23 PM

我试图从这些电子邮件中获取日期,还有100多个,但似乎无法正确地利用RegEx。首先,我不是RegEx的专家。但我在StackOverflow上看到过类似的文章,并尝试使用它们的代码,但出于某种原因,它对我不起作用。

我的代码:

代码语言:javascript
复制
with open(file_path, 'r') as f:
pattern = re.compile("(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d")
        email = f.read()
        dates = pattern.findall(email)
        if dates:
            #print("Date:", ''.join(dates))
            print("Date:", ''.join(''.join(dates) for dates in dates))

我很困惑为什么这个RegEx似乎对其他人有效,但对我却不起作用。我还尝试使用了更深入的RegEx,因此:

re.compile("^((0?[13578]|10|12)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[01]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1}))|(0?[2469]|11)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1})))$")

我只想捕捉这些电子邮件中的日期,然后我可以担心以后会把它们转换成正确的格式。任何帮助都是非常感谢的,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-09 17:50:02

要捕获日期,可以使用以下代码:

代码语言:javascript
复制
regex = r"Date: (\d{1,2}\/\d{1,2}\/\d{4})"

检查在线演示

票数 2
EN

Stack Overflow用户

发布于 2016-12-09 17:50:29

我建议选择日期:行,并在日期之后获取字符串:行的末尾,然后使用像解析日期字符串?这样的日期解析器库。

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

https://stackoverflow.com/questions/41066040

复制
相关文章

相似问题

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