Can I use stringmatch, if I am looking for a match at the end of a string??

1 view (last 30 days)
Ines on 3 Apr 2012
Hello everybody, I have a dataset of strings with a structure 'product_reaction_parameter' and I want to check whether a specified string (e.g. 'parameter2' is contained in the string, how can I do that? Strmatch only looks for matches at the beginning of the string but I wanna look for matches in the middle or at least in the end...the output I need is the row index as it is obtained when using conventional strmatch.
Would really appreciate any kind of advice, I am a Chemist and thus not very well-trained in programming :)

Accepted Answer

Geoff on 3 Apr 2012
You should use regular expressions for this.
doc regexp
They are far more powerful than simple string matching, but you can use them for that purpose:
idx = regexp(s, 'parameter2$');
if ~isempty(idx)
disp('Found parameter2');
The $ matches at the end of the string.
You can also use regexp to split your string up into its parts:
tokens = regexp(s,'(.*)_(.*)_(.*)', 'tokens')
And then use straight string comparison on the third token.
  1 Comment
Geoff on 3 Apr 2012
This will also work on a cell-array of strings, matching each row. It returns an array of indices for the position where the string was matched. To turn that into a row index into your cell, you do this:
rows = find(cellfun(@(x) ~isempty(x), regexp(s, 'parameter2$')));

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!