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

Rainmeter正则匹配Discord成员数据失效问题求助

修复Rainmeter中匹配Discord语音用户的正则表达式

修复后的正则表达式

"username": "((?!Bot1|Bot2)[^"]*)"(?:(?!}\s*,\s*{).)*?"channel_id": "(\d+)"

原正则的问题分析

你原来的正则"username": "((?!Bot1|Bot2)[^"]*)"(?:(?!"id").)*channel_id": "(\d+)".*?核心问题出在中间的(?:(?!"id").)*部分:

  • 这个负前瞻规则要求匹配的内容里不能包含"id",但每个Discord成员对象里都必然有"id"字段,导致正则在匹配到第一个"id"后就无法继续向前,根本碰不到同一个对象里的channel_id。
  • 两部分单独工作时,要么只匹配用户名(没有限制跨对象),要么只匹配channel_id,但组合后因为中间的错误限制,无法关联同一对象的两个字段。

修复逻辑说明

  1. 限定匹配范围在单个成员对象内:(?:(?!}\s*,\s*{).)*?这个规则的作用是,只要没遇到成员对象结束的},就继续匹配,确保username和channel_id属于同一个成员对象,不会跨对象匹配。
  2. 保留Bot排除规则:((?!Bot1|Bot2)[^"]*)继续生效,直接排除用户名是Bot1或Bot2的条目。
  3. 惰性匹配避免过度匹配:末尾的.*?确保找到当前对象内的第一个channel_id就停止,避免意外匹配到后续对象的内容。

验证效果

针对你提供的JSON示例:

  • 会成功捕获User1和对应的频道ID;
  • Bot1因为没有channel_id字段,不会被匹配;
  • Bot2虽然有channel_id,但用户名被排除规则过滤,也不会被匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:40:18