How to further extract a match values from a regexp match
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello,
Had a quick question regarding regexp.
Let's say you have some string and you want to extract certain values from it
string='hello_1_goodbye_0.23_hi_1.55_exit_1000'
regexp(string,'hello_\d+\.*\d*','match')
>>>
1x1 cell array
('hello_1')
From here I'd like to just extract the number. I'm not super familiar with matlab, but in python for example, in a regex search you can use parenthesis than extract the specific group of your match
pattern='hello_(\d+\.*\d*)'
regex_search.group(1)='1'
So the pattern is the same and you are still matching hello_1, but from there you are able to extract only the numerical value
0 Commenti
Risposta accettata
Vilém Frynta
il 1 Giu 2023
If you use 'tokens' instead of match.
string = 'hello_2_goodbye_0.23_hi_1.55_exit_1000';
pattern = 'hello_(\d+\.*\d*)';
match = regexp(string, pattern, 'tokens');
num = match{1} % can be converted to number from a string
2 Commenti
Stephen23
il 1 Giu 2023
You might also want to use the ONCE option, to reduce the cell array nesting by one level:
S = 'hello_2_goodbye_0.23_hi_1.55_exit_1000';
P = 'hello_(\d+\.*\d*)';
C = regexp(S, P, 'tokens','once')
Più risposte (0)
Vedere anche
Categorie
Scopri di più su String Parsing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!