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

Python正则匹配@开头词时如何排除后面紧跟@的匹配项

解决方案

你只需要调整原有正则末尾的负向先行断言规则即可,修改后的完整正则如下:

(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9-_]+)(?![\w@])

修改逻辑说明

  1. 原有正则末尾的(?!\w)仅限制匹配内容后不能紧跟单词字符,没有覆盖你需要排除的紧跟@的场景
  2. 将其调整为(?![\w@])后,就可以同时限制匹配内容后既不能紧跟单词字符,也不能紧跟@字符,刚好满足你的排除需求
  3. 原有前缀的正向回顾断言逻辑保持不变,仍然用于保证@前为行首或非用户名允许的字符,符合匹配独立@提及的规则

测试结果验证

针对你给出的测试字符串@first@nope @second@Hello @my-friend, email@ whats.up@example.com @friend,使用修改后的正则匹配,最终仅会得到两个符合要求的结果:

  • @my-friend
  • @friend
    @first、@second这类后面紧跟@的结果会被完全排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:39:04