我有两种不同类型的日期/时间戳的文件。首先,我已经格式化,像这样的日期/时间戳记:使用正则表达式匹配多种日期/时间戳
DATE : Fri, 20 Apr 2012 09:15:17 -0700 (PDT)
其次,我已经时间戳格式,像这样:
12:24 PM
我写了两个正则表达式模式来处理这个:
full_pattern = re.compile('\w{3,4}\W\s\w{3}\s\d{4}\s\d\d:\d\d:\d\d')
time_pattern = re.compile(' \d:\d\d\s[\w]{2}')
这些是会话,所以我正在查找包含会话开始日期和时间的输出,然后查找对话中每个项目的时间戳。最终的应用是每次日期和时间匹配时使用Arduino微控制器驱动某些东西(例如:是4月30日和下午1:01?是否有消息?是?好的,启动)。
我有两个问题:
的第一图案(“full_pattern”)不返回任何东西,而且我想不通为什么。我需要解决全部问题吗? (包括“日期”位)?
如何将这些一起使用?所以正则表达式找到第一个日期/时间戳,然后打印出时间戳,找到下一个日期/时间戳,然后打印出时间戳。像这样:
周五,2012年4月20日11点01分17秒 上午11时01 上午11:03
周五,2012年4月20日9时15分17秒 晚上9:15 9:17 PM
请注意:日期/时间戳在军事的时间,其余的是AM/PM
我已经试过管道像这样:
re.findall(pattern1 | pattern2, string)
但它不喜欢那样。我也试过在同时运行它们的循环,就像这样:
for line in string:
pattern1 = re.compile('\w{3,4}\W\s\w{3}\s\d{4}\s\d\d:\d\d:\d\d')
pattern2 = re.compile(' \d:\d\d\s[\w]{2}')
re.findall(pattern1, string)
re.findall(pattern2, string)
但是,这导致所有模式2的无限循环(可能不是无限的,绝对的方式比我更需要)。
任何帮助将不胜感激,谢谢!
刚刚测试过并取得了不错的成绩。谢谢! – spikem 2012-04-26 22:51:56