从CamelCase字符串中分词

时间:2012-05-21 21:35:06

标签: regex string matlab strtok

我有一个字符串

string =  'one Two9three four_Five 67SixSevenEightNine';

我需要把它分成几个字:

'one' 'two' 'three' 'four' 'five' 'six' 'seven' 'eight' 'nine'

我设法将除CamelCase之外的所有内容分开,当小写字母后跟大写字母时:

while ~isempty(string)
        [str,string] = ...
           strtok(string, ...
                  [' ~@$/#.-:&*+=[]?!(){},''">_<;%' char(9) char(10) char(13) '0-9']);
       str = regexprep(str, '[0-9]','');
end

我也可以获取模式的索引,但只有当我知道如何插入空格或某些字符之间时,我才能再次使用上面的代码分成单词:

pattern = '[a-z][A-Z]+';
[pat,idx]=regexp(str, pattern,'match');

任何想法? 谢谢!

1 个答案:

答案 0 :(得分:2)

为什么不在进行其他处理之前更换camelCase?

newstring = regexprep(string, '([a-z])([A-Z])', '$1 $2');

while ~isempty(newstring)
...