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

如何使用正则表达式读取目录中匹配指定命名规则的.mat文件

实现方法

匹配规则说明

你需要的文件名对应正则模板为:^stc_{k}.*_alpha\.mat$,各部分含义如下:

  • ^:匹配文件名的起始位置,避免前缀前面有其他字符的文件被误匹配
  • stc_{k}:替换为当前迭代的k值,匹配固定前缀
  • .*:匹配任意数量的任意字符,对应你说的文件名中间的任意内容
  • _alpha\.mat:匹配固定后缀,其中\.是转义写法,用来匹配文件名里真实的点号,避免被正则里的.通配符匹配任意字符
  • $:匹配文件名的结束位置,避免后缀后面有其他字符的文件被误匹配

常用场景代码示例

场景1:Python 实现(适合读取.mat文件的场景)

import re
from pathlib import Path
import scipy.io as sio

# 替换为你的文件所在目录路径
dir_path = Path("./your_file_directory")

# 按你的实际需求调整k的迭代范围
for k in range(1, 20):
    # 生成当前k对应的正则匹配规则
    match_pattern = re.compile(rf"^stc_{k}.*_alpha\.mat$")
    # 遍历目录找匹配文件
    for file in dir_path.iterdir():
        if file.is_file() and match_pattern.match(file.name):
            # 找到目标文件,执行读取逻辑
            mat_data = sio.loadmat(file)
            print(f"k={k}对应文件读取完成:{file.name}")
            # 每个k仅对应一个文件,找到后直接跳出循环节省性能
            break

如果你不需要用正则的复杂扩展能力,也可以直接用glob语法实现,写法更简单:dir_path.glob(f"stc_{k}*_alpha.mat")


场景2:Shell/Bash 实现

# 替换为你的文件所在目录路径
DIR="./your_file_directory"

# 按你的实际需求调整k的迭代范围
for k in {1..20}
do
    # 查找匹配当前k的文件,-maxdepth 1表示仅遍历当前目录不递归子目录
    target_file=$(find "$DIR" -maxdepth 1 -type f -regex ".*/stc_${k}.*_alpha\.mat$")
    if [ -n "$target_file" ]; then
        echo "k=${k}对应文件:$target_file"
        # 这里添加你处理文件的逻辑
    fi
done

注意事项

  • 如果你需要遍历子目录查找文件,去掉Python代码里的遍历限制、或者去掉Shell find命令里的-maxdepth 1参数即可
  • 如果k是字符串而非数字,直接替换正则里的{k}部分即可,逻辑完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:54:05