How to extract only floating numbers from a string

93 views (last 30 days)
Here is my string "21.5VgDC_0.05000V_VgAC_50M-150M30ms47GV1" How can I extract only the numbers 21.5, 0.05000, 50, 150 30 and 47 from the string. Thanks in advance

Accepted Answer

Stephen23
Stephen23 on 20 Jun 2018
>> S = '21.5VgDC_0.05000V_VgAC_50M-150M30ms47GV1';
>> C = regexp(S,'\d+\.?\d*','match');
>> C{:}
ans = 21.5
ans = 0.05000
ans = 50
ans = 150
ans = 30
ans = 47
ans = 1
  3 Comments
Nadatimuj
Nadatimuj on 9 Mar 2022
Edited: Nadatimuj on 9 Mar 2022
What if I use C = regexp(S,'\d*\.?\d*','match')?
And what if I use C = regexp(S,'\d*\.?\d+','match')
What is the difference?
Walter Roberson
Walter Roberson on 9 Mar 2022
In the first one everything is optional, so it matches the empty pattern too.
The second one does require at least one digit. However it does not support digits followed by a decimal point with no digits after

Sign in to comment.

More Answers (1)

Riadh Essaadali
Riadh Essaadali on 21 May 2023
C = regexp(S,'[-+]?\d+\.?\d*','match');

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!