MATLAB:提取字符串的一部分

时间:2015-01-07 17:16:01

标签: string matlab

我想提取一个字符串的一部分(在我的情况下是文件名),看起来像这个

filename = '12345_name_IV_a12.dat'

我对'_IV_'(显示在所有文件中)和'.dat'之间的部分感兴趣。因此,答案应该是那样的

a    
12

可能? 12345'name'的长度可能会发生变化。数字(12)也可以只有一位数。

2 个答案:

答案 0 :(得分:0)

你可以这样做:

parts=strsplit(filename, {'_IV_', '.dat'});
result=parts{2};

如果您想将结果拆分为数字和字符,可以使用评论中所述的regexp

character = result(regexp(result,'\D'));
numeral = result(regexp(result,'\d'));

在这种情况下,character包含anumeral包含字符12

答案 1 :(得分:0)

我认为这样做会:

regexp('12345_name_IV_a12.dat', '.*_IV_(\D*)(\d*)\.dat$', 'tokens', 'once')

我会稍微解释一下'.*_IV_(\D*)(\d*)\.dat$'模式。我从文件名的末尾开始向后工作。 $标记字符串的结尾。然后我匹配文件扩展名,两个标记(用括号划分)和_IV_

'tokens'标志使它返回两个标记,'once'标志阻止它将结果包装在一个额外的单元格数组中。

我认为这个表达非常明确,总会给你正确的结果。我希望它能解决你的问题。