Does MATLAB require a 2nd REGEXP to match data values obtained from a previous REGEXP?
2 ビュー (過去 30 日間)
古いコメントを表示
I've got a set of commands that look like this:
str = 'Part ID: 1 or Part ID: 2 or Part ID: 5 or Part ID: 10';
exp = '*?Part ID:\s+(\d+)';
tokens = regexp(str, exp, 'tokens');
Part_data = reshape(str2double([tokens{:}]), 1, []).'
The objective of the code is to match only Part ID values 2 and 5. MATLAB is easily extracting all 4 part IDs with the commands above. However, I can't get MATLAB to read ONLY values 2 and 5.
I've been seearching Mathworks and using the MATLAB documentation in hopes of answering the following question: Does MATLAB require a 2nd REGEXP to match data values obtained from a previous REGEXP? Or am I making this harder than it is?
2 件のコメント
Ken Atwell
2013 年 5 月 24 日
What is it that makes values 2 and 5 different/special ("keepers") from 1 and 10 ("non-keepers")?
採用された回答
Walter Roberson
2013 年 5 月 24 日
exp = 'Part ID:\s+([25])\W';
The expression will match as many times as needed
その他の回答 (1 件)
James Kristoff
2013 年 5 月 24 日
The quick solution to the objected you stated is to use a more specific regular expression, i.e. if you only want the values 2 and 5:
exp = '*?Part ID:\s+([2|5])';
The real question is:
- what is the actual motivation behind your question?
Meaning, if you just always want to get 2 and 5, then why not have a static vector of 2 and 5.
- What makes 2 and 5 special/different from 1 and 10?
It is that difference or uniqueness that you should use to isolate the values you want in a more generic algorithm.
2 件のコメント
Walter Roberson
2013 年 5 月 24 日
[2|5] means "2" or "|" or "5", not "2" or "5". [25] already means "2" or "5"
James Kristoff
2013 年 5 月 24 日
Also, a cleaner way of creating a vector of doubles from a cell array is to use the cellfun command, e.g.
Part_data = cellfun(@(str)str2double(str), tokens)
参考
カテゴリ
Help Center および File Exchange で Get Started with MATLAB についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!