Find exact string match in a cell of strings

6 vues (au cours des 30 derniers jours)
Milan Prakash
Milan Prakash le 7 Mai 2022
Commenté : Milan Prakash le 7 Mai 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 commentaires
Jan
Jan le 7 Mai 2022
Modifié(e) : Jan le 7 Mai 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 le 7 Mai 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.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 7 Mai 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 commentaire
Milan Prakash
Milan Prakash le 7 Mai 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by