我一直在尝试为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>.*)
这个正则表达式的问题是,它无法匹配跨越多行与换行符的大消息。您可以在上面提供的链接中看到问题。
帮助将不胜感激。
谢谢。
答案 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]+?
,这意味着:懒惰地匹配任何内容(包括换行符),直到以下条件为止。前瞻确保在换行符(可以收紧!)或字符串的最后一行之后还有另外两位数字。