Есть ли эквивалентная функция strmatch, которая возвращает числовой индекс всех элементов массива, которые начинаются с указанного регулярного выражения (вместо строки?
Предпосылки: У меня есть массив строк, называемый strarray
. Я хочу отфильтровать все строки, у которых нет специального strprefix
. Следующий код, который ищет индексы массива строк ( strmatch func ), для которого существует определенный префикс, а затем строит новый массив из строк, содержащих префикс:
indexes = [];
n = strmatch(strprefix, strarray);
indexes = [indexes,n];
indexes = sort(indexes);
newarray = strarray(indexes);
Он работает нормально, однако префикс
является строкой, и я хотел бы использовать определенное регулярное выражение вместо этого.
Или, может быть, есть более простой способ (один лайнер?) для выполнения такой задачи?
Обновить
Я знаю о функции regexp. Я пытаюсь отфильтровать строки из массива строк, но я изо всех сил стараюсь сделать это за один или два шага. Мой текущий код для этого (не уверен, что это правильный способ кодирования Matlab).
- Step 1. Empty the string with no prefix:
regexp(strarray,[prefix,'.*'],'match','once');
- Step 2. Get index of empty lines
emptyCells = cellfun(@isempty,array);
- Step 3. Remove the empty rows
array(emptyCells) = [];