Matlab regexp命令无法正常工作

时间:2016-08-17 21:14:38

标签: regex matlab directory

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'

1 个答案:

答案 0 :(得分:2)

我建议再次通过MATLAB' regexp documentation,特别注意expression部分。

您的正则表达式'PML*.mat'正在尝试匹配符合以下条件的文件:

  1. PM)完全匹配PM
  2. L*)在0和无限次之间匹配L
  3. .)匹配任何单个字符
  4. mat)完全匹配mat
  5. 匹配字符串包括:PML.matPMkmatPMLLLLLLLLLLLLLLL.mat

    一个功能替代方案可以是'PML.*\.mat',其操作如下:

    1. PML)完全匹配PML
    2. .*)匹配0和无限次之间的任何字符
    3. \.)完全匹配.\escape character
    4. mat)完全匹配mat
    5. 顺便说一句,如果您已经在dir来电中过滤了结果,为什么还需要regexp

相关问题