Как применить регулярное выражение к массиву ячеек в Matlab?

У меня есть массив ячеек res с ячейками 3x2, каждая из которых содержит строку. Я хочу применить regexp к каждой ячейке, и это должно выглядеть так:

fin = cellfun(@regexp(res, '\.', 'split'),res,'UniformOutput',false)

однако это не делает работу. Кто-нибудь знает, как это можно правильно совместить?


person beginh    schedule 22.08.2012    source источник


Ответы (2)


Вы были на правильном пути, но синтаксис вашей анонимной функции неверен. Попробуй это:

fin = cellfun(@(x)regexp(x, '\.', 'split'), res, 'UniformOutput', false)
person Eitan T    schedule 22.08.2012

И если у вас есть ячейка «res», которая состоит из числовых и строк и вы хотите заменить «a» на «b» в каждом символе «res», вам следует использовать следующее:

idx_isNumeric = @(x) any(isnumeric(x));                     
idx_isNumeric2 = cellfun(idx_isNumeric, res);  
res( ~idx_isNumeric2 ) = regexprep( res( ~idx_isNumeric2 ), 'a', 'b');  

Надеюсь, поможет;)

person PiotrW_50    schedule 09.08.2013