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

正则表达式匹配限定根目录的单级子文件夹路径求助

解决方案

直接使用以下正则表达式即可精准匹配你需要的两种合法路径:

^(?:\.\/)?apidocs\/static\/[^\/]+\.(?:png|jpg|jpeg|gif|pdf)$

正则规则说明

  • ^:锚定字符串开头,确保路径前不会出现其他额外目录
  • (?:\.\/)?:可选匹配根目录下的./前缀,?:表示这是非捕获分组,不会占用匹配结果的分组存储位置
  • apidocs\/static\/:固定匹配目标路径的起始部分,确保是根目录下的apidocs文件夹
  • [^\/]+:匹配文件名,[^\/]限制不能包含斜杠,避免误匹配apidocs子目录里的文件
  • \.(?:png|jpg|jpeg|gif|pdf):匹配指定格式的文件扩展名,同样用非捕获分组简化逻辑
  • $:锚定字符串结尾,确保路径后没有多余内容

匹配效果验证

  • 合法路径:
    • ./apidocs/static/mypicture.jpg → 匹配成功
    • apidocs/static/mypicture.jpg → 匹配成功
  • 非预期路径:
    • ./traapidocs/static/mypicture.jpg → 不匹配(开头的traapidocs与apidocs不匹配)
    • ./whatever/apidocs/static/mypicture.jpg → 不匹配(前缀多了whatever/目录,被^锚定拦截)

Python脚本使用示例

可以用re.fullmatch()直接验证整个字符串是否符合规则:

import re

pattern = r'^(?:\.\/)?apidocs\/static\/[^\/]+\.(?:png|jpg|jpeg|gif|pdf)$'
test_paths = [
    "./apidocs/static/mypicture.jpg",
    "apidocs/static/mypicture.jpg",
    "./traapidocs/static/mypicture.jpg",
    "./whatever/apidocs/static/mypicture.jpg"
]

for path in test_paths:
    if re.fullmatch(pattern, path):
        print(f"✅ 匹配: {path}")
    else:
        print(f"❌ 不匹配: {path}")

你之前加^未生效,大概率是没处理./的可选情况,或者没加$导致字符串后半部分有内容也能被部分匹配。这个正则同时锚定了开头和结尾,还兼容两种根目录写法,刚好满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:09:39