Мне нужно найти массив ячеек и вернуть одно логическое значение, указывающее, соответствует ли какая-либо ячейка регулярному выражению.
Например, предположим, что я хочу узнать, содержит ли массив ячеек strs
foo
или -foo
(без учета регистра). Регулярное выражение, которое мне нужно передать в regexpi, это ^-?foo$
.
Примеры входных данных:
strs={'a','b'}
% результат равен 0
strs={'a','foo'}
% результат 1
strs={'a','-FOO'}
% результат 1
strs={'a','food'}
% результат 0
Я придумал следующее решение, основанное на Как реализовать подстановочный знак в функции ismember в Matlab? и Поиск массива ячеек с регулярным выражением, но, похоже, я смогу упростить его:
~isempty(find(~cellfun('isempty', regexpi(strs, '^-?foo$'))))
У меня проблема в том, что для такой простой операции это выглядит довольно загадочно. Есть ли более простое и понятное выражение, которое я могу использовать для достижения того же результата?
any
! Я подумал, что должно быть что-то хотя бы немного проще, чем обернуть все это в~isempty(find())
. Спасибо. К сожалению, я думаю, что я облажался, и мое регулярное выражение должно было быть^-?foo$
, поэтому конкатенация не будет работать в моем случае... но, возможно, это будет полезно для кого-то еще. Еще раз спасибо за быстрый и исчерпывающий ответ. 25.10.2013