regexp usage for cellArray data which includes both characters and numbers.

2 views (last 30 days)
cellArray=cellstr(cellArray)
cellArray =
'O2930202 465254.432 4066809.025'
'O2910008 499252.083 4042876.84'
'O2920014 494404.625 4047958.526'
Name Size Bytes Class Attributes
cellArray 22x1 4236 cell
%when I want to extract first column of the cellArray, I use
out1 = regexp(cellArray,'(?<=^\s*)\d*','match')
out1 = cat(1,out1{:})
out1 = sprintf('%s\n', out1{:})
%but it doesn't work because there are characters with numbers. It only works if only numbers are exist.
%what kind of code I need to write for extracting first column in terms of both characters and numbers.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 10 Jul 2013
cellArray ={'O2930202 465254.432 4066809.025';
'O2910008 499252.083 4042876.84';
'O2920014 494404.625 4047958.526'}
out1 = regexp(cellArray,'(^[a-zA-Z]*)|((?<=^\w*)\d*)','match');
out = cat(1,out1{:});

More Answers (1)

Jim Hokanson
Jim Hokanson on 10 Jul 2013
Try not to use lookaround operators in Matlab.
If you only want the first column:
first_column_string = regexp(cellArray,'\d+','match','once')
first_column_numbers = str2double(first_column_string)
The key is using 'once' ...
If your input was a single string you could use textscan:
str = strjoin(cellArray','\n') %2013a?
or
temp = strcat(cellArray,{char(10)});
str = [temp{:}];
data = textscan(str,'O%f %f %f','MultipleDelimsAsOne',true);
first_column_numbers = data{1}

Categories

Find more on Characters and Strings in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!