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

正则表达式需求:避免匹配以特定字符结尾的@开头词汇

解决方案

使用这个正则表达式即可满足你的需求:

@[^@\-!>:]+

解释

  • @:匹配名称开头的必填@符号。
  • [^@\-!>:]+:匹配一个或多个不属于禁止列表的字符。其中:
    • ^ 在字符类内表示否定,即排除后续列出的字符。
    • @\-!>: 是你指定的禁止字符(- 用反斜杠转义,避免被解析为字符范围)。
    • + 确保至少有一个字符跟在@后面(避免匹配单独的@)。

匹配验证

针对你的示例:

  1. 字符串 zhsvfghzfajhuib@Bobbie?skvshvfhj!G!:匹配 @Bobbie?skvshvfhj(直到遇到禁止字符 ! 为止,所有字符均不在禁止列表内)。
  2. 字符串 768huehfvwkjv@Lana97958749ndgjhb!G!:匹配 @Lana97958749ndgjhb(同样直到遇到 ! 为止)。
  3. 字符串 ,vbfnhytjnh@Sammie-sjvjhsvfjj!G!kjdbdjb:匹配 @Sammie(遇到禁止字符 - 时停止,不会包含 -,符合你要求的 @Sammie- 不匹配的规则)。

你之前尝试的问题分析

  • 你的第一个正则 @(?[A-Za-z]+)[^@-!:>]:
    • 错误地限制了@后的字符只能是字母([A-Za-z]+),但你的示例中包含了 ?、9 等非字母字符,因此无法匹配完整的有效名称。
    • 末尾的 [^@-!:>] 多匹配了一个额外字符,导致你误以为"移除了最后一个字符"。
  • 添加额外字符的尝试 @(?[A-Za-z]+).[^@-!:>]:
    • 引入的 . 会匹配任意字符,导致跳过了本应属于有效名称的字符,不符合需求。
  • 使用单词边界 @(?[A-Za-z]+)\b[^@-!:>]:
    • 单词边界 \b 仅对字母数字和下划线生效,对于 ? 这类非单词字符无法正确识别边界,因此在部分场景失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:35:36