python - 使用正则表达式从电子邮件中捕获日期

标签 python regex email

以下是来自 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 多个电子邮件,但似乎无法正确使用 RegEx。其一,我不是 RegEx 专家。但我在 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))

我很困惑为什么这个正则表达式似乎对其他人有用但对我不起作用。我还尝试使用我在 SO 上找到的更深入的正则表达式:

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

我只想捕获这些电子邮件中的日期,然后我就可以担心稍后将它们转换为正确的格式。感谢任何帮助,谢谢。

最佳答案

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

regex = r"Date: (\d{1,2}\/\d{1,2}\/\d{4})"

检查online demo .

关于python - 使用正则表达式从电子邮件中捕获日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066040/

相关文章:

python - Spark DataFrame 运算符(唯一、乘法)

php - 如何在 Laravel 中配置 `.env` 文件以发送邮件?

javascript - 如何在java邮件中发送html按钮点击链接?

python - python 1和2之间的区别

python flask ImmutableMultiDict

php - 将字符串的第一个字母大写(前面有特殊字符)- PHP

php - 将 Javascript 正则表达式转换为 PHP (PCRE) 表达式

jQuery:找到所有图像链接并将它们转换为一些默认拇指?

c# - 无需写入磁盘即可将多个文件以编程方式附加到电子邮件

python - 在windows上使用linux cookies时的解密问题