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

如何实现类Discord的@提及功能:提取@后至空格/下划线的单词

实现Discord式@提及检测功能

问题分析

你当前的代码仅截取了@符号前的内容,完全未处理@后的目标单词,这是无法实现需求的核心问题。我们需要准确提取@后到空格/下划线为止的单词,并验证其是否在指定列表中。

解决方案代码

import re

# 指定允许提及的用户/角色列表
allowed_mentions = ["everyone", "alice", "bob", "charlie"]

user_input = input("input: ")

# 匹配@后到空格或下划线为止的单词
# 正则规则解释:@匹配符号本身,([^\s_]+)捕获非空格、非下划线的连续字符
mentions = re.findall(r'@([^\s_]+)', user_input)

# 逐一检查提及合法性
for mention in mentions:
    if mention in allowed_mentions:
        print(f"合法提及: @{mention}")
    else:
        print(f"非法提及: @{mention}(不在允许列表中)")

代码说明

  • 正则匹配:r'@([^\s_]+)' 精准锁定@开头的内容,自动在遇到空格或下划线时停止提取,确保拿到完整的目标提及单词。
  • 多提及支持:re.findall会一次性提取输入中所有符合规则的@内容,比如输入@alice 通知@everyone会同时提取alice和everyone。
  • 合法性校验:遍历提取结果,与指定列表对比后输出明确的校验结果。

测试示例

输入:@alice 帮我叫下@everyone_还有@david
输出:

合法提及: @alice
合法提及: @everyone
非法提及: @david(不在允许列表中)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:20:50