Regexp for finding floats in a string

What RegExp should I be using for floats?

Currently, I have /[-+0-9eE.]+/, viz,

require ‘test/unit’
class TestFloatRegExp < Test::Unit::TestCase
def test_finds_em
%w{ 1 -2 3.0 0.4 5.0e+5 -6e+06 .7E+7 }.each do |string|
assert( string.match(/[-+0-9eE.]+/), “no match >>#{string}<<” )
end
end
end

On Aug 15, 2006, at 12:50 AM, Bil K. wrote:

end
end

Have a look at the regexp in

perldoc -q float

– fxn

PS: Your mail client runs on a Mac, that works there.

Xavier N. wrote:

Have a look at the regexp in

perldoc -q float

/^([±]?)(?=\d|.\d)\d*(.\d*)?(Ee)?$/

Ouch!

Thanks; I think. :slight_smile:

Regards,

On 8/16/06, Bil K. [email protected] wrote:

Xavier N. wrote:

Have a look at the regexp in

perldoc -q float

/^([±]?)(?=\d|.\d)\d*(.\d*)?(Ee)?$/

Ouch!

Thanks; I think. :slight_smile:

Quick caveat - that’s for a c float (as mentioned in that perldoc
snippet). Ruby float (& other numeric) literals allow the underscore
character (with restrictions) as well. So really, it depends on
exactly what you’re parsing and why.

-A