How to extract only floating numbers from a string

14 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Stephen23
Stephen23 il 20 Giu 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 Commenti
Nadatimuj
Nadatimuj il 9 Mar 2022
Modificato: Nadatimuj il 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 il 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

Accedi per commentare.

Più risposte (1)

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

Categorie

Scopri di più su Characters and Strings 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!

Translated by