2

我有一个名为 list 的单元格数组,其中包含一个文件列表。我想只从该列表中提取特定文件并将它们存储在同一个数组中。这是我正在尝试做的事情:

function [ varargout ] = myFiles( varargin )

list = {'test.m' '.' '..' 'test1.m' 'test2.txt'};

list = strmatch('*.m', list)

end

我的最终列表应该如下所示,但是索引应该足够了。

list = test.m  test1.m

我在 Windows 上使用 MATLAB。在双引号中使用模式会引发错误。也尝试使用 \\'s 作为 (.) 和/或 (*) 的转义序列。

4

2 回答 2

1

strmatch用于查找以给定前缀开头的字符串。不支持正则表达式。对于你想要regexp的,它以相反的顺序接受它的参数。或者,如果您反转所有字符串,您可以使用strmatch('m.',list)然后再次反转结果来恢复文件名。

于 2013-03-15T05:53:03.043 回答
0

根据这里你需要这样的东西:.*\.m$. 问题在于,与 Windows 中的通常搜索不同,0*次或更多次重复的意思是在它之前,所以单独进行是行不通的。

在这种情况下,我是说匹配任何字符(.表示任何单个字符)0 次或更多次,然后.m在最后加上 a。指定匹配必须在字符串的$末尾结束。

于 2013-03-15T05:53:10.813 回答