Reg Ex Help Required

Hi,

Please help me with regular expression.

str = “abc = 100.300”

i want to write a regular xpression for getting the value after =, i.e.
100.300, i mean reg ex should return value after =

Please help.

Thanks
Saurabh

ruby-1.8.7-p334 :006 > str = “abc = 100.300”
=> “abc = 100.300”
ruby-1.8.7-p334 :007 > /= (.*)/.match(str)[0]
=> “= 100.300”

sorry, should be

ruby-1.8.7-p334 :006 > str = “abc = 100.300”
=> “abc = 100.300”
ruby-1.8.7-p334 :008 > /= (.*)/.match(str)[1]
=> “100.300”

alternatively you could make the two inputs variables and the output you
are
trying to recieve a variable as well that way you would never have to
worry
about regexing anything. You would simply reference the variable . . .
You
can of course create a class as well . . .

puts “First Number”
r = gets.chomp
puts “Second Number”
p = gets.chomp
x = p * r
puts x

class Someclass
def initialize (First Number, Second Number)
@First Number = First Number
@Second Number = Second Number
end
end

Calc = Someclass.new(0,1)
x = calc.first * calc.last

Of course if you’re working with floats or strings back and forth just
add
the to_f or to_s. I haven’t worked on ruby in a while but maybe this
will
help you spawn some ideas.

On Aug 10, 2011, at 11:20 AM, saurabh a. wrote:

Hi,

Please help me with regular expression.

str = “abc = 100.300”

i want to write a regular xpression for getting the value after =, i.e.
100.300, i mean reg ex should return value after =

Might I suggest an alternative to regex?

irb(main):003:0> str.split(/ = /)
=> [“abc”, “100.300”]
irb(main):004:0> str.split(/ = /)[1]
=> “100.300”
irb(main):005:0>

Regards,
Chris W.
http://www.twitter.com/cwgem

Um, no, why would you need a class to store two numbers? I’d go with
Chris’s split approach. Unless what you really want is to match the
number, then you do need regex and an example one would be /\d+.\d+/
.

2011/8/10, Daniel N. [email protected]:

On Thu, Aug 11, 2011 at 07:34:54AM +0900, Josh C. wrote:

I’d use split as well, but I’d probably do it like this:

str = “abc = 100.300”
variable, value = str.split(’=’, 2).map(&:strip)
variable # => “abc”
value # => “100.300”

I’d probably use a regex for the split sequence rather than a literal to
account for variations in whitespace, rather than a map:

variable, value = str.split(/\s*=\s*/, 2)

. . . but either way works.

On Wed, Aug 10, 2011 at 7:44 PM, Chad P. [email protected] wrote:

account for variations in whitespace, rather than a map:

variable, value = str.split(/\s*=\s*/, 2)

. . . but either way works.


Chad P. [ original content licensed OWL: http://owl.apotheon.org ]

It seems to me that there could be whitespace on either end, ie

"
def whatever
var = 123
end
"

This shows a very common example of leading whitespace, so I thought
using
strip would be better.

On Wed, Aug 10, 2011 at 1:30 PM, Chris W. [email protected] wrote:

100.300, i mean reg ex should return value after =
Chris W.
http://www.twitter.com/cwgem

I’d use split as well, but I’d probably do it like this:

str = “abc = 100.300”
variable, value = str.split(‘=’, 2).map(&:strip)
variable # => “abc”
value # => “100.300”

On Thu, Aug 11, 2011 at 10:15:57AM +0900, Josh C. wrote:

using strip would be better.
Did I miss the part where someone said that the “var” part is actually
something the code should preserve separately?

On Wed, Aug 10, 2011 at 8:15 PM, Josh C. [email protected]
wrote:

Although, I suppose you could make the argument that an actual parser
would
be best.