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

匹配以@开头非@结尾的空格分隔序列的正则表达式问题

解决方案

要匹配空格分隔的@keyword格式(排除@something@),并提取其中的关键词,可以使用以下正则表达式:

(?<=^|\s)@(\w+)(?=[^\w@]|$)

正则解释

  • (?<=^|\s):正向回顾后发断言,确保@符号的前面是字符串开头或者空白字符,保证目标序列是被空格分隔的独立单元。
  • @:匹配开头的@符号。
  • (\w+):捕获组,匹配一个或多个字母、数字或下划线(即你需要提取的关键词部分)。
  • (?=[^\w@]|$):正向预查,确保关键词后面的字符不是字母/数字/下划线,也不是@,或者已经到了字符串结尾。这一步会直接排除@bad@这类以@结尾的序列。

测试验证

将该正则应用到你的示例字符串:

"@hello how are @you? I am @good, thank @you! But @bad@ is not okay."

会成功捕获以下关键词:hello、you、good、you,完全符合需求,且不会匹配bad。

补充说明

如果你需要匹配包含标点的完整序列(比如@you?、@good,)而非纯关键词,可以使用这个正则:

(?<=^|\s)@[^\s]+(?<![@])
  • [^\s]+:匹配所有非空格字符(包括标点)
  • (?<![@]):负向回顾后发断言,确保序列的最后一个字符不是@,排除@bad@这类格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:00:21