Выдержка Matlab из ячейки строк с помощью регулярных выражений - PullRequest
1 голос
/ 08 апреля 2020

У меня есть ячейка из нескольких тысяч строк, которые содержат одно или несколько подчеркиваний, как показано ниже:

cel={'ABC_D234_567','ABD_X157_224','PT_D204_157','PT_O268_578','DTA_P2345','CBDRT_X345_D325};

Мне нужно извлечь все буквы до первого подчеркивания и одну букву после; например, 'ABC_D', 'PT_O' или 'CBDRT_X'.

Я нашел способ сделать это, используя strfind, но это несколько строк кода; поиск индексов для всех подчеркиваний, использование только индексов для первых подчеркиваний, затем извлечение строк от 1 до (индекс + 1).

Я почти уверен, что это можно сделать одной или несколькими строками; что-то вроде:

cel_new = regexe(cel,'something something','once','match');

Каким будет это «что-то»?

1 Ответ

1 голос
/ 08 апреля 2020

используйте cellfun, чтобы применить эти операции к каждому элементу ячейки. например,

cel={'ABC_D234_567','ABD_X157_224','PT_D204_157','PT_O268_578','DTA_P2345','CBDRT_X345_D325'};

cel_new=cellfun(@(x) regexprep(x,'^([A-Z]+_[A-Z]).*','$1','once'), cel,'uni',false)

regexprep помогает найти и извлечь шаблон, а cellfun применяет его к каждой строке в ячейке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...