Почему res «regexp» возвращает NULL (Matlab)

Я пытаюсь использовать регулярное выражение функции в Matlab. Первый код в порядке следующим образом:

          data={'ABCD' 'BCDE' 'ACBE' 'ADEBC '} % 3 AB, 2 BE, 2 BC

          %res = regexp( data, 'A.*.*B') % OK code

Приведенный выше код предназначен для подсчета порядка A.*.B в массиве ячеек данных. Однако, когда я пытаюсь протестировать данные ячейки, которые определяются следующим образом:

            celldata = {'AB'; 'BE'; 'BC'}

            for kk=1:length(celldata)

                 res = regexp( data,'celldata{kk}(1).*.*celldata{kk}(2)')

            end 

Значение 'res' возвращает NULL . Пожалуйста, где здесь ошибка. Может ли кто-нибудь помочь мне подсчитать порядок каждого элемента в данных ячейки в данных? Спасибо !


person kgk    schedule 09.06.2015    source источник
comment
Каков желаемый результат в этом примере?   -  person Luis Mendo    schedule 09.06.2015
comment
@LuisMendo: желаемый результат в этом примере будет следующим: счет 2 для порядка AB, счет 2 для порядка BE и счет 2 для порядка BC. Они являются членами ячейки данных. Я хочу проверить каждый из них в массиве данных   -  person kgk    schedule 09.06.2015
comment
Извините, отсчитайте 3 до БК.   -  person kgk    schedule 09.06.2015


Ответы (1)


Используйте конкатенацию строк

res = regexp( data, [celldata{kk}(1) '.*.*' celldata{kk}(2)])

найти количество вхождений

for kk=1:length(celldata)
   res = cellfun(@(x) length(x), regexp( data,[celldata{kk}(1) '.*' celldata{kk}(2)]))
end 
person rst    schedule 09.06.2015
comment
Спасибо, Робер Стеттлер! Желаемый результат в этом примере будет следующим: Count 2 для порядка AB, count 2 для порядка BE и count 2 для порядка BC. Они являются членами ячейки данных. Я хочу проверить каждый из них в массиве данных. Ваша модификация хороша первым возвратом 'res'. Однако по счету второй и третий элементы подобны приведенным ниже: - person kgk; 09.06.2015
comment
res = [1] [] [1] [1] % OK Однако два приведенных ниже результата выглядят странно. разрешение = [] [1] [3] [] разрешение = [2] [1] [] [4] - person kgk; 09.06.2015
comment
Надеюсь, они должны быть: res = [1] [] [1] [1]; разрешение = [] [1] [1] []; разрешение = [1] [1] [] [1] - person kgk; 09.06.2015