2010-04-12 5 views
6

문자열의 셀 배열에서 토큰을 사용하여 정규 표현식을 사용합니다. 셀 배열을 가지고 있습니다. 나는 내가 벡터화 된 형태로 문자열의 세포 배열로이 출력을 변환 할 수있는 방법 S.에서 셀 스트링 당 하나의 일치를 알고셀 배열을 MATLAB에서 셀 배열로 변환

S = {'string 1';'string 2';'string 3'}; 
res = regexp(S,'(\d)','tokens') 
res = 

    {1x1 cell} 
    {1x1 cell} 
    {1x1 cell} 
res{2}{1} 
ans = 
    '2' 

: 여기에 간단한 예입니다?

답변

12

문제는 생각보다 심각합니다. REGEXP의 출력은 실제로 문자열의 셀 배열의 셀 배열 의 셀 배열입니다! 그래, 3 단계! 그러나

cellArrayOfStrings = cellfun(@(c) c{1},res); 

, 당신은 또한 한 단계를 제거하는 REGEXP에 전화를 변경 한 다음 VERTCAT를 사용할 수 있습니다 다음 사용 CELLFUN 문자열의 단지 셀 어레이를 떠나, 상위 두 가지 수준 없애 :

res = regexp(S,'(\d)','tokens','once'); %# Added the 'once' option 
cellArrayOfStrings = vertcat(res{:}); 
+0

너무 쉽습니다. :) 고마워요. – yuk

+0

@gnovice : 당신은 그 수준에 관하여 맞습니다. 두 번째 해결책은 속도와 명확성면에서 더 좋습니다. 다시 한번 감사드립니다. – yuk

+1

@gnovice : regexp 문서를 얼마나 자주 읽었는지 모르겠지만 'once'옵션을 발견하지 못했습니다. 감사! – Jonas

관련 문제