MATLAB:提取字符串的一部分

MATLAB: extract part of a string

我想提取字符串的一部分(在我的例子中是文件名),如下所示

filename = '12345_name_IV_a12.dat'

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

a    
12

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

你可以这样做:

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

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

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

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

我想这样就可以了:

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

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

'tokens' 标志使其成为 return 两个标记,'once' 标志阻止它在额外的元胞数组中包装结果。

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