如何在MATLAB中使用正则表达式删除路径(字符串)的末尾部分?

时间:2016-08-18 11:35:31

标签: regex string matlab

假设我们在MATLAB中有这些字符串:

xx = 'C:/MY_folder/This_gg/microsoft/my_file';

xx = 'C:/end_folder/This_mm/google/that_file';

我希望在结束/my_filethat_file)后删除表达式。如何在MATLAB中使用正则表达式来完成这个?

4 个答案:

答案 0 :(得分:3)

我知道你要求正则表达式,但有一种更简单的方法:

pathStr = fileparts(xx)

或者,如果你想要文件的所有部分

[pathStr, name, ext] = fileparts(xx)

答案 1 :(得分:1)

  1. 如果您想同时删除最终的/ ,请使用

    yy = regexprep(xx, '/[^/]*$', '');
    

    正则表达式模式'/[^/]*$'匹配/,后跟字符串末尾的任意数量的非/。匹配由空字符串替换(regexprep)。

  2. 如果您想保留最终/ ,可以使用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')