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 Commento

Stephen23
Stephen23 il 28 Feb 2015
Modificato: Stephen23 il 28 Feb 2015
For developing and checking regular expressions here is an interactive helper:

Accedi per commentare.

 Risposta accettata

Walter Roberson
Walter Roberson il 4 Apr 2012

3 voti

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 Commenti

Edward
Edward il 4 Apr 2012
Thankyou! is there any chance you can explain what that expression means? im quite new to regexp
Ashish Uthama
Ashish Uthama il 5 Apr 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 ()
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

Accedi per commentare.

Più risposte (0)

Categorie

Community Treasure Hunt

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

Start Hunting!

Translated by