我想提取一个字符串的一部分(在我的情况下是文件名),看起来像这个
filename = '12345_name_IV_a12.dat'
我对'_IV_'
(显示在所有文件中)和'.dat'
之间的部分感兴趣。因此,答案应该是那样的
a
12
可能? 12345
和'name'
的长度可能会发生变化。数字(12
)也可以只有一位数。
答案 0 :(得分:0)
你可以这样做:
parts=strsplit(filename, {'_IV_', '.dat'});
result=parts{2};
如果您想将结果拆分为数字和字符,可以使用评论中所述的regexp
:
character = result(regexp(result,'\D'));
numeral = result(regexp(result,'\d'));
在这种情况下,character
包含a
,numeral
包含字符12
。
答案 1 :(得分:0)
我认为这样做会:
regexp('12345_name_IV_a12.dat', '.*_IV_(\D*)(\d*)\.dat$', 'tokens', 'once')
我会稍微解释一下'.*_IV_(\D*)(\d*)\.dat$'
模式。我从文件名的末尾开始向后工作。 $
标记字符串的结尾。然后我匹配文件扩展名,两个标记(用括号划分)和_IV_
。
'tokens'
标志使它返回两个标记,'once'
标志阻止它将结果包装在一个额外的单元格数组中。
我认为这个表达非常明确,总会给你正确的结果。我希望它能解决你的问题。