正则表达式匹配whatsapp聊天记录

时间:2018-05-10 19:27:35

标签: python regex regex-lookarounds regex-group regex-greedy

我一直在尝试为WhatsApp聊天记录创建Regex。

到目前为止,我已经能够实现这一目标

Click Here用于测试链接

创建以下正则表达式:

(?P<datetime>\d{2}\/\d{2}\/\d{4},\s\d(?:\d)?:\d{2} [pa].m.)\s-\s(?P<name>[^:]*):(?P<message>.*)

这个正则表达式的问题是,它无法匹配跨越多行与换行符的大消息。您可以在上面提供的链接中看到问题。

帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:2)

你去了:

^
(?P<datetime>\d{2}/\d{2}/\d{4}[^-]+)\s+-\s+
(?P<name>[^:]+):\s+
(?P<message>[\s\S]+?)
(?=^\d{2}|\Z)

查看修改后的demo on regex101.com

<小时/> 基本上,我添加了锚点,简化了日期时间部分并插入了[\s\S]+?,这意味着:懒惰地匹配任何内容(包括换行符),直到以下条件为止。前瞻确保在换行符(可以收紧!)或字符串的最后一行之后还有另外两位数字。