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

如何在Python中搜索并提取文本中的@提及内容?

提取文本中的@提及内容(含空格)

问题分析

你之前的正则表达式仅匹配到Tik,原因有两点:

  1. 正则限定了仅允许字母、数字、下划线和不连续的点,未包含空格和西班牙语特有的重音字符(如ñ);
  2. 正则内的分组设计导致findall返回的是分组捕获内容,而非完整的@提及字符串。

最优简便实现

根据你的需求(提取含空格的完整@提及),可以用两种简洁的正则方案:

方案1:针对当前文本的精准匹配(分隔符为#)

如果你的文本中@提及总是出现在#标签之后、行尾之前,直接匹配@开头到下一个#之前的所有内容:

import re

text = "VLOG - Primer evento de la temporada #ModaenTiktok #eventotiktok #madrid @Tik Tok españa"
regex = re.compile(r'@[^#]+')
mentions = regex.findall(text)
print(mentions)  # 输出: ['@Tik Tok españa']

方案2:通用匹配(支持多语言、含空格的@提及)

如果需要适配更多场景(比如提及后可能是标点、换行或其他符号),可以匹配@开头,后跟包含字母、空格、Unicode重音字符的内容:

import re

text = "VLOG - Primer evento de la temporada #ModaenTiktok #eventotiktok #madrid @Tik Tok españa"
# 匹配@开头,包含字母、空格、西班牙语/拉丁语系重音字符的内容
regex = re.compile(r'@[\w\s\u00C0-\u017F]+')
mentions = regex.findall(text)
print(mentions)  # 输出: ['@Tik Tok españa']

说明

  • [^#]+表示匹配除#之外的任意字符,适合当前文本的结构;
  • [\w\s\u00C0-\u017F]+覆盖了字母、数字、下划线、空格,以及常见的欧洲语言重音字符(如ñ、á、é等),通用性更强;
  • 避免了原正则中不必要的分组和长度限制,简化了逻辑且更贴合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:44:52