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 Comment

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

Sign in to comment.

 Accepted Answer

Walter Roberson
Walter Roberson on 4 Apr 2012
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 Comments

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

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!