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

查找含特定参数文件名的正则表达式问题求助

解决方案

以下是满足所有要求的正则表达式,涵盖你列出的四种空格场景,且仅使用匹配逻辑(无需排除):

(?<!\s)\s[A-Ga-g](?:b|#|m|M)?\s(?!\s)|\s{2}[A-Ga-g](?:b|#|m|M)?\s(?!\s)|(?<!\s)\s[A-Ga-g](?:b|#|m|M)?\s{2}(?!\s)|(?<!\s)\s[A-Ga-g](?:b|#|m|M)?\.\w+$

正则拆解(按四个场景分)

  1. 前后各1个空格(排除前后双空格)
    (?<!\s)\s[A-Ga-g](?:b|#|m|M)?\s(?!\s)

    • (?<!\s):负向回溯断言,确保目标字符串前的空格是单个(前面无额外空格)
    • [A-Ga-g](?:b|#|m|M)?:匹配调式核心——大小写A-G开头,可选接b/#/m/M(?:表示非捕获组,优化性能)
    • \s(?!\s):确保目标字符串后的空格是单个(后面无额外空格)
  2. 前2个空格后1个空格
    \s{2}[A-Ga-g](?:b|#|m|M)?\s(?!\s)

    • \s{2}:匹配前置的两个空格
    • 后续部分同场景1,确保后置是单个空格
  3. 前1个空格后2个空格
    (?<!\s)\s[A-Ga-g](?:b|#|m|M)?\s{2}(?!\s)

    • (?<!\s)\s:确保前置是单个空格
    • \s{2}(?!\s):匹配后置的两个空格,且后面无额外空格
  4. 位于文件名后缀前,仅前接1个空格
    (?<!\s)\s[A-Ga-g](?:b|#|m|M)?\.\w+$

    • (?<!\s)\s:确保前置是单个空格
    • \.\w+$:匹配文件名后缀(如.wav/.mp3),锚定到文件名结尾

你之前正则的问题

  • 原正则\s[A-Ga-g][b|#|m|M]\s强制要求调式字符串必须带后缀字符(b/#/m/M),漏掉了仅单个字母的情况(如C)
  • 未覆盖前双空格/后双空格、后缀前的场景
  • 未处理“排除前后双空格”的约束,导致会匹配 Cm 这类不符合要求的字符串

内容的提问来源于stack exchange,提问作者Mr.Pebbles1961

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:32:39