You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式如何捕获至下一个命名捕获组前的全部内容

聊天记录字段提取正则写法

可用正则表达式

直接使用以下正则,开启全局匹配(g修饰符)即可一次性提取所有消息的三个目标字段:

(?<by>\S+)\s*\((?<time>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\)\s*:?\s*(?<text>[\s\S]*?)(?=\S+\s*\(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\)|$)

规则说明

  • 兼容样例里的格式差异:时间右括号后允许出现0或多个空白字符、0或1个冒号,覆盖第一条消息无冒号、第二条消息有冒号的情况
  • 正文截断逻辑:
    • 正文部分用[\s\S]*?惰性匹配所有字符(包含换行、空段落),不会默认贪婪吞掉后续全部内容
    • 末尾的正向预查规则会在两种场景下停止正文匹配:一是匹配到下一条消息的「用户名+时间戳」头部标识,二是匹配到整个聊天文本的末尾,完全避免跨消息抓取的问题

使用提示

提取完成后如果需要干净的正文内容,可以对text捕获组的结果做首尾空白字符裁剪,去掉多余的换行、空格即可。

内容的提问来源于stack exchange,提问作者crazyguy123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 21:45:33