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

2 次查看(过去 30 天)
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 :)

采纳的回答

Geoff
Geoff 2012-4-3
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');
end
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 个评论
Geoff
Geoff 2012-4-3
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$')));

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by