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

2024-09-29 21:47:25 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是3封不同电子邮件的3个片段:

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多个,但似乎不能正确地使用正则表达式。首先,我不是正则表达式的专家。但我在StackOverflow上看到过类似的帖子,并尝试过使用它们的代码,但由于某些原因,它对我不起作用

我的代码:

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))

我很困惑为什么这个正则表达式似乎为别人工作,而不是我。我也尝试过使用更深入的正则表达式,所以:

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})))$")

我只想捕捉这些电子邮件中的日期,然后我可以担心把他们变成正确的格式后。谢谢您的帮助


Tags: fromfordate电子邮件subjectdatesjoinfish

热门问题