Finding strings in a cell array that start with a specific substring

1 view (last 30 days)
Matt C
Matt C on 28 Oct 2020
Commented: Matt C on 28 Oct 2020
Hello, I'm looking for a specific implementation using the available functions in MATLAB 2015b.
If I have the following cell array
A = {'test' 'hello' 'world' 'st1' 'st2' 'st99'}
I would like to return a cell array B containing all elements that are of the form 'stXXX', where XXX is any number.
In the above example, I would like B to return as:
B = {'st1' 'st2' 'st99'}
In previous implementations, I have been able to get away with the following line:
B = A(not(cellfun('isempty',strfind(A,'st'))
but unfortunately in example A, the element 'test' is also triggering because it contains the 'st' substring. I'm just looking for code that doesn't have to be implented via a for loop. Thanks in advance.

Accepted Answer

J. Alex Lee
J. Alex Lee on 28 Oct 2020
Try this
A = {'test' 'hello' 'world' 'st1' 'st2' 'st99'}
matches = regexp(A,'^st\d+$','match')
B = [matches{:}]
  2 Comments
Matt C
Matt C on 28 Oct 2020
And extending this to a one-liner:
B = A(not(cellfun('isempty',regexp(A,'^st\d+$','match'))))

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!