尝试用python编写一个脚本进行后期处理。我有一个包含带有时间戳的消息的文件。我想将所有邮件提取到一个列表中。
Regex-从消息开始直到下一个时间戳
findallItems = re.findall(r'(?s)((?<=message).*?(?=((\d{4})\-((0[1-9])|(1[0-2]))\-((0[1-9])|(1[0-2]))|\Z)))', fileread)
这工作得很好,但它也返回匹配的时间戳。我怎么能只回邮件而不加时间戳呢
如果我使用先行位置作为文本,那么它工作得很好。例如
findallItems = re.findall(r'(?s)((?<=message).*?(?=message|\Z))',fileread)
您需要删除不必要的捕获括号,并将其他括号转换为非捕获括号:
见this regex demo
但是,您可以只在必要的模式上保留一个捕获组,
re.findall
将只返回此组值:见another regex demo
相关问题 更多 >
编程相关推荐