MATLAB: Indexing array to multiple substrings

regexpstrfind

Hi all,
I have a nx1 cell array (called names), each cell containing characters. For example
names={'A_info','B_info','C_info','D_info'}
I have another mx1 cell array (called tags) with tags that I know exist in the nx1 cell array and I want to find the whole string which contains any of the tags and which is stored in the nx1 cell. E.g.
tags={'A','B'}
Is there a way, without a loop, to find the total string containing substrings in tags? That is, using tags I want to find the full strings A_info and B_info, but not C_info and D_info
Thanks in advance for the help!

Best Answer

ismatch = ~cellfun('isempty', regexp(names, strjoin(regexptranslate('escape', tags), '|')));
result = names(ismatch)
The regexptranslate step is unneeded in your example. I've put it there in case your real tags contain special regular expression characters (such as ().+*$^[]?{}) that need to be escaped.