在matlab中将一个字符串分成两部分

Split a string into two parts in matlab

输入字符串是:

InputStr1 = 'this-is-a-boy-5';
InputStr2 = 'this23-is-a-boy-10';
InputStr3 = 'this-41';

输出应该是:

Output1 = ['this-is-a-boy'] [5]
Output2 = ['this23-is-a-boy'] [10]
Output3 = ['this'] [41]

我想将这些字符串分成两部分,这样我就可以将第一个字符串和最后一个数字从中分开。我试过 strsplit() 但没有用。

尝试拆分出现在字符串末尾数字之前的 -

正则表达式: -(?=\d+$)

解释:

  • (?=\d+$) 如果数字在字符串末尾则向前看。并匹配它之前的 - 。您可以对此进行拆分。

Regex101 Demo

这应该有效(假设最后总是有数字)

data = 'this-is-a-boy-5'
toks = regexp(data, '(.*)-(\d+)$', 'tokens');
display(toks)

如果你想使用strsplit你可以将它用作

toks = strsplit(data, '-(?=\d+$)', 'DelimiterType', 'RegularExpression');
display(toks)