How to further extract a match values from a regexp match
3 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Vilém Frynta
2023 年 6 月 1 日
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 件のコメント
Stephen23
2023 年 6 月 1 日
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')
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で String Parsing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!