Does MATLAB require a 2nd REGEXP to match data values obtained from a previous REGEXP?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Ken Atwell
il 24 Mag 2013
What is it that makes values 2 and 5 different/special ("keepers") from 1 and 10 ("non-keepers")?
Risposta accettata
Walter Roberson
il 24 Mag 2013
exp = 'Part ID:\s+([25])\W';
The expression will match as many times as needed
Più risposte (1)
James Kristoff
il 24 Mag 2013
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 Commenti
Walter Roberson
il 24 Mag 2013
[2|5] means "2" or "|" or "5", not "2" or "5". [25] already means "2" or "5"
James Kristoff
il 24 Mag 2013
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)
Vedere anche
Categorie
Scopri di più su Get Started with MATLAB in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!