尝试在python中编写脚本以进行一些后期处理。我有一个文件,其中包含带有时间戳的邮件。我想将所有消息提取到列表中 正则表达式 - 从消息开始直到下一个时间戳。
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)
答案 0 :(得分:1)
您需要删除不必要的捕获括号并将其他括号转换为非捕获:
2.2.x-dev
但是,您可以将1个捕获组保留在必要的模式上,findallItems = re.findall(r'(?s)(?<=message).*?(?=(?:\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-2])|\Z))', fileread)
只会返回此组值:
re.findall