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

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.

 採用された回答

J. Alex Lee
J. Alex Lee 2020 年 10 月 28 日

0 投票

Try this
A = {'test' 'hello' 'world' 'st1' 'st2' 'st99'}
matches = regexp(A,'^st\d+$','match')
B = [matches{:}]

2 件のコメント

Matt C
Matt C 2020 年 10 月 28 日
This works beautifully. I guess I had gotten myself trapped into thinking I needed cellfun. Thank you!
Matt C
Matt C 2020 年 10 月 28 日
And extending this to a one-liner:
B = A(not(cellfun('isempty',regexp(A,'^st\d+$','match'))))

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCell Arrays についてさらに検索

質問済み:

2020 年 10 月 28 日

コメント済み:

2020 年 10 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by