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

正则表达式匹配仅以3个~开头且后续无~的文件名问题

正则修正方案:匹配仅以3个波浪号开头的文件名

修正后的正则表达式

(?:^|\/)\~{3}[^~\/]*$

正则各部分说明

  • (?:^|\/):匹配字符串开头或路径分隔符/,确保3个波浪号是文件名的起始位置(避免文件名中间出现3个波浪号的情况被误匹配)
  • \~{3}:精确匹配3个波浪号,严格限定开头的波浪号数量
  • [^~\/]*:匹配任意数量(含0个)既不是波浪号也不是路径分隔符的字符,确保文件名后续内容不再包含波浪号
  • $:匹配字符串结尾,确保整个文件名部分完全符合规则

匹配验证

  • 符合要求(匹配成功):
    • 单独文件名:~~~abcd.txt
    • 带路径的文件名:a/b/c/d/~~~abcd.txt
  • 不符合要求(匹配失败):
    • 开头仅2个波浪号:~~helloworld.txt
    • 开头超过3个波浪号:~~~~1234.txt
    • 后续包含波浪号:~~~ab~cd.txt
    • 波浪号不在文件名开头:a/b/abc~~~def.txt

原正则的问题分析

  • \~{1,3}允许匹配1-3个波浪号,导致仅1或2个波浪号开头的文件名被错误匹配
  • [^/]*仅排除了路径分隔符/,未排除波浪号~,因此开头有超过3个波浪号的文件名(如~~~~1234.txt)会被前3个波浪号+后续的波浪号及其他字符匹配成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 21:00:03