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

25 visualizaciones (últimos 30 días)
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.

Respuesta aceptada

J. Alex Lee
J. Alex Lee el 28 de Oct. de 2020
Try this
A = {'test' 'hello' 'world' 'st1' 'st2' 'st99'}
matches = regexp(A,'^st\d+$','match')
B = [matches{:}]
  2 comentarios
Matt C
Matt C el 28 de Oct. de 2020
This works beautifully. I guess I had gotten myself trapped into thinking I needed cellfun. Thank you!
Matt C
Matt C el 28 de Oct. de 2020
And extending this to a one-liner:
B = A(not(cellfun('isempty',regexp(A,'^st\d+$','match'))))

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Cell Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by