Hi, im trying to read in some numbers from some HTML:
'<br>1,020.32 mb<br>'
Im currently using regexp(string,'\d+','match'), how can i read in a number such as the one above that has a comma and a decimal point?

1 commentaire

Stephen23
Stephen23 le 28 Fév 2015
Modifié(e) : Stephen23 le 28 Fév 2015
For developing and checking regular expressions here is an interactive helper:

Connectez-vous pour commenter.

 Réponse acceptée

Walter Roberson
Walter Roberson le 4 Avr 2012

3 votes

regexp(string, '(\d+,)*\d+(\.\d*)?', 'match')
The above is flexible enough to support any number of leading groups of digits and commas (including no leading groups). It is also flexible enough to support the possibility that the decimal point and following digits are not present -- so it supports the equivalent of your \d+ (plain integers without commas or decimal points). Furthermore it supports a trailing decimal point with no digits afterwards.

5 commentaires

Edward
Edward le 4 Avr 2012
Thankyou! is there any chance you can explain what that expression means? im quite new to regexp
Ashish Uthama
Ashish Uthama le 5 Avr 2012
Edward, this might help you get started: http://www.mathworks.com/help/techdoc/matlab_prog/f0-42649.html#f0-42723
Breakdown:
(\d+,) -- One or more digit(s) followed by a comma
* -- zero or more instances of stuff within ()
\d+ -- One or more digit(s)
(\.\d*)-- A . (the \ is to 'escape it' since just using a . has a different meaning) followed by zero or more digit(s)
? -- zero or one instance of the stuff within ()
Evangelos Stefanidis
Evangelos Stefanidis le 11 Juin 2021
In my case I had the following string and I was interested in getting the number between -....mVPower-. That was my coding:
Sting='2021-06-08-Blank5-D150mm-R0mm-7LPM-0N2Shild-12.6mVPower-105ns-25ns-G600-C580-2Acc-60xInt-4VBins-slit10u-100Frames-NoIcorr-Polar-NoFilter.spe'
pattern1='(?<=\-)(\d+,)*\d+(\.\d*)?(?=mVPower\-)';
power=str2double(regexp(fname,pattern1,'match'));
S = '2021-06-08-Blank5-D150mm-R0mm-7LPM-0N2Shild-12.6mVPower-105ns-25ns-G600-C580-2Acc-60xInt-4VBins-slit10u-100Frames-NoIcorr-Polar-NoFilter.spe';
P = str2double(regexp(S,'\d+\.?\d*(?=mVPower)','match','once'))
P = 12.6000

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by