Find exact string match in a cell of strings

2 visualizaciones (últimos 30 días)
Milan Prakash
Milan Prakash el 7 de Mayo de 2022
Comentada: Milan Prakash el 7 de Mayo de 2022
Hello,
I would like to match a string in a cell array of strings.
For example I want to do exact match of str
str = 'XYZ1'
in a cell array of C
C = {'This is XYZ1','This is XYZ11', 'This is XYZ1111','This is XYZ1.0'}
Problem with using regexp -
fun = @(x) regexp(x,'XYZ1','match')
fidx = cellfun(fun, C)
or contains -
fun = @(x) contains(x,'XYZ1')
fidx = cellfun(fun, C)
is that all four cell strings contains some version of the string 'XYZ1' I am looking for. Kindly let me know if I can change something with regexp (there is help but its bit confusing for me with respect to using conditions/tokens etc.) or anything else I can use.
Regards,
Milan
  2 comentarios
Jan
Jan el 7 de Mayo de 2022
Editada: Jan el 7 de Mayo de 2022
What is exactly not accepted after the keyword 'XYZ1'? Spaces, dots, letters, numbers, any other characters?
Does endsWith(C, 'XYZ1') solve the problem already?
Milan Prakash
Milan Prakash el 7 de Mayo de 2022
Thanks, endsWith works just fine. Have to check for the actual cell array whether it does the trick. XYZ1 is an example of identifier I am looking for. In the text file, there are particular identifiers named from X(1 to 5000). Now each identifier for example X1 or X100 has a specific operation associated with it hence its important to identify them correctly. There are no spaces or dots. Example cell array was just a random example.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 7 de Mayo de 2022
C = {'This is XYZ1','This is XYZ11', 'This is XYZ1111','This is XYZ1.0'};
str = 'XYZ1';
rgx = sprintf('%s(?=$|\\s)',str);
regexp(C,rgx,'match','once')
ans = 1×4 cell array
{'XYZ1'} {0×0 char} {0×0 char} {0×0 char}
  1 comentario
Milan Prakash
Milan Prakash el 7 de Mayo de 2022
Thanks, this works as well. Just for my case and I think I missed mentioning it and the end want the the index position where the desired string is. As such can either add few lines at the end of this code or use endsWith as pointed out in one of the other comments.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by