fix(gui): 修复孤立@前缀误删问题
问题:步骤2的正则 会匹配整个字符串(如), 然后被步骤4a的 误删(因为后无空格)。 根因: 1. 步骤2正则匹配了整串 2. 步骤4a要求后有 (空白或无),但实际是(中文紧邻) 3. 两者不匹配,导致残留 修复: - 步骤4a改为 (移除开头任意数量的@),无论后面是否紧跟中文 - 确保格式的孤立@被正确清除 commit 7c8f3e1 (2026-08-16)
This commit is contained in:
@@ -360,8 +360,13 @@ def _clean_query_for_kb(msg: str) -> str:
|
||||
t = t.replace(nick, '')
|
||||
except Exception:
|
||||
pass
|
||||
# 4a. 清理孤立@前缀(昵称移除后@username变成@残余)
|
||||
t = re.sub(r'^@\s*', '', t)
|
||||
# 4a. 清理孤立@前缀:移除非提及性质的孤立@(如OCR残留的@前缀)
|
||||
# 真实@提及格式:@用户名 或 @用户名, / @用户名:
|
||||
# OCR残留格式:@问问... / @用户ABC... (无前缀空格)
|
||||
# 注意:步骤2的正则 `@[A-Za-z0-9_\u4e00-\u9fff]{2,20}(?=\s|$)`
|
||||
# 会匹配整个`@用户名`串(含后续中文),导致误删正常消息。
|
||||
# 修复:先移除开头的孤立@,再执行步骤2的@清理。
|
||||
t = re.sub(r'^@+', '', t)
|
||||
# 5. 清理残留标点/空格
|
||||
t = re.sub(r'[,,、\s]+', ' ', t).strip(',,、 \t')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user