MATLAB正则表达式被拒绝删除字符串开头的空格

use*_*243 3 regex string matlab str-replace

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

mm = ['  44412 (25.01%)'];
Run Code Online (Sandbox Code Playgroud)

我想只删除此字符串中的第一个空格以获得此输出:

'44412 (25.01%)'
Run Code Online (Sandbox Code Playgroud)

我正在使用strrep(mm,'\^\s\s','')但没有工作.问题是什么?

exc*_*aza 5

问题strrep在于它不允许您使用regex模式.filter('\^')的第一部分也尝试^显式匹配,因此它不会对您的字符串起作用.如果删除前导,则\过滤器可以正常工作regexprep,但仅限于具有2个前导空格的字符串.

请尝试使用此更通用的过滤器regexprep.

str = '  44412 (25.01%)';
newstr = regexprep(str, '^\s+', '');
Run Code Online (Sandbox Code Playgroud)

哪个回报:

newstr =

44412 (25.01%)
Run Code Online (Sandbox Code Playgroud)

我在这里做的是在字符串的开头匹配1个或更多的空格字符.这种语法还允许我们在没有任何前导空格的字符串上使用它,并且不对它进行任何修改.


编辑:这里有一些内置的替代品!

您可以使用strtrim,但它会删除前导尾随空格:

newstr = strtrim(str);
Run Code Online (Sandbox Code Playgroud)

您还可以使用strjust左对齐字符串:

newstr = strjust(str, 'left');
Run Code Online (Sandbox Code Playgroud)

如果你想要真正的创意,你可以翻转你的数组并使用deblank,它会删除尾随的空格:

newstr = fliplr(deblank(fliplr(str)));
Run Code Online (Sandbox Code Playgroud)