f = dir('../Data/PML*.mat');
f1 = regexp({f.name}, 'PML*.mat', 'match');
[f1{:}]
这是我的代码片段,用于选择驻留在父目录中的Data文件夹中的文件。 f是66个元素的结构数组(那里有66个文件),正如我所希望的那样,我想选择具有如下文件名的文件:
PMLsigma_8PMLkappa_6.mat
。但是这些操作的结果是一个空单元格数组,我不知道它会导致一个空数组。如果在第二行而不是'PML*.mat'
- 在f1的定义中 - 我写了完整的文件名,那么就没有问题了。我在这里做错了什么?
编辑:{f.name}单元格数组的前两个元素
r =
'PMLsigma_10PMLkappa_1.mat' 'PMLsigma_10PMLkappa_2.mat'
答案 0 :(得分:2)
我建议再次通过MATLAB' regexp documentation,特别注意expression
部分。
您的正则表达式'PML*.mat'
正在尝试匹配符合以下条件的文件:
PM
)完全匹配PM
L*
)在0和无限次之间匹配L
.
)匹配任何单个字符mat
)完全匹配mat
匹配字符串包括:PML.mat
,PMkmat
和PMLLLLLLLLLLLLLLL.mat
一个功能替代方案可以是'PML.*\.mat'
,其操作如下:
PML
)完全匹配PML
.*
)匹配0和无限次之间的任何字符\.
)完全匹配.
(\
是escape character)mat
)完全匹配mat
顺便说一句,如果您已经在dir
来电中过滤了结果,为什么还需要regexp
?