2012-12-18 34 views
3

我想从正则表达式具有不同的整数长度

CH1Avg 
Ch2Avg 
Ch3 
Ch4Avg 
Ch5 
Ch6Avg 
Chan7 
Channel9 
Ch010 
Ch011Avg 
Chann12Average 

...高达拆分这些字符串...

Ch100AVG 

我需要把它们分割成自己的consituent部分

"Ch", ##, "Avg" 

第一和第三部分的长度和形式都是可变的。我想使用第二个分量进行分割,第二个分量是一个从0到100不等的整数。整数可以是或不是零填充。

有什么想法?我试图用()没有太大的成功。

回答

2

向该字符串分割成构成部件的话,建议使用命名令牌方便:

strCell = {'CH1Avg' 
'Ch2Avg' 
'Ch3' 
'Ch4Avg' 
'Ch5' 
'Ch6Avg' 
'Chan7' 
'Channel9' 
'Ch010' 
'Ch011Avg' 
'Chann12Average'} 

out = regexp(strCell,'(?<channelName>\D+)(?<channelNum>\d+)(?<channelType>\w*)','names') 
out = [out{:}]; 

out(end) 
ans = 
    channelName: 'Chann' 
    channelNum: '12' 
    channelType: 'Average' 
0

拆分(\d+)。括号确保您分解的数字也将成为数组的一部分。

相关问题