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

时间:2015-11-12 13:20:19

标签: regex string matlab str-replace

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

mm = ['  44412 (25.01%)'];

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

'44412 (25.01%)'

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

1 个答案:

答案 0 :(得分:5)

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

尝试使用此更通用的过滤器,而不是regexprep

str = '  44412 (25.01%)';
newstr = regexprep(str, '^\s+', '');

返回:

newstr =

44412 (25.01%)

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

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

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

newstr = strtrim(str);

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

newstr = strjust(str, 'left');

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

newstr = fliplr(deblank(fliplr(str)));