假设我们在MATLAB中有这些字符串:
xx = 'C:/MY_folder/This_gg/microsoft/my_file';
或
xx = 'C:/end_folder/This_mm/google/that_file';
我希望在结束/
(my_file
和that_file
)后删除表达式。如何在MATLAB中使用正则表达式来完成这个?
答案 0 :(得分:3)
我知道你要求正则表达式,但有一种更简单的方法:
pathStr = fileparts(xx)
或者,如果你想要文件的所有部分
[pathStr, name, ext] = fileparts(xx)
答案 1 :(得分:1)
如果您想同时删除最终的/
,请使用
yy = regexprep(xx, '/[^/]*$', '');
正则表达式模式'/[^/]*$'
匹配/
,后跟字符串末尾的任意数量的非/
。匹配由空字符串替换(regexprep
)。
如果您想保留最终/
,可以使用lookbehind断言修改正则表达式:
yy = regexprep(xx, '(?<=/)[^/]*$', '');
或1替换为'/'
而不是''
:
yy = regexprep(xx, '/[^/]*$', '/');
答案 2 :(得分:1)
如果你想删除最后一个单词,请尝试:
yy = regexprep(xx,'(\w+)$','');
这会找到字符串中的最后一个单词,并用空字符串替换它。
您可以在以下链接中看到正则表达式: Regex101.com - Select last word
答案 3 :(得分:1)
您可以使用 fullfile 代替正则表达式,如果有 '\' 或 '/' 则是独立的
yy = fullfile(xx, '..')
这将返回字符串 'xx\..'。
zz = fullfile(yy, 'newfolder')
这将返回字符串 'xx\..\newfolder' 但它在 dir() 和其他函数上正确解析。
当然可以一行来回。
zz = fullfile(xx, '..', 'newfolder')