regexp problem - differences in Perl and Ruby

S

Sam Dela Cruz

--=_alternative 0009AE3C882570F2_=
Content-Type: text/plain; charset="US-ASCII"

I got different results in Perl and Ruby of this regular expression. Can
somebody maybe give me a "Ruby Way" solution of this? The output from
Perl is what I want. But I'm currently programming this is Ruby.

In Perl:
#snippet start ==========
sub transform_data
{
my $data = shift;
if ($data=~/^[\d\.]+$/) #numbers
{
print "Got here!\n";
}
else
{
print "'$data'","\n";
}
}

my $data = "patched 3 systems:
134.27.56.237
134.27.59.6
134.27.55.43";

transform_data($data);
#snippet end =========

Output is:
'patched 3 systems:
134.27.56.237
134.27.59.6
134.27.55.43'

---------------------------------------------------------------------------------------------------------------

In Ruby:
#snippet start ============
def transform_data(data)
if (data=~/^[\d\.]+$/) #numbers
puts "Got here!"
else
puts("'" + data + "'")
end
end

data = "patched 3 systems:
134.27.56.237
134.27.59.6
134.27.55.43"

transform_data(data)
#snippet end ============

Output is:
Got here!

Now why would it match in Ruby? Am I missing something here?

Regards,
Sam
--=_alternative 0009AE3C882570F2_=--
 
D

dblack

Hi --

I got different results in Perl and Ruby of this regular expression. Can
somebody maybe give me a "Ruby Way" solution of this? The output from
Perl is what I want. But I'm currently programming this is Ruby.

def transform_data(data)
if (data=~/^[\d\.]+$/) #numbers
puts "Got here!"
else
puts("'" + data + "'")
end
end

data = "patched 3 systems:
134.27.56.237
134.27.59.6
134.27.55.43"

transform_data(data)
#snippet end ============

Output is:
Got here!

Now why would it match in Ruby? Am I missing something here?

^ and $ match start and end of line, not string. For start and end of
string, you want \A and \z (or \Z to ignore final newline).


David

--
David A. Black
(e-mail address removed)

"Ruby for Rails", from Manning Publications, coming April 2006!
http://www.manning.com/books/black
 
S

Sam Dela Cruz

--=_alternative 000B79BE882570F2_=
Content-Type: text/plain; charset="US-ASCII"

Thanks David.

Yes, after I replaced ^ with \A and $ with \a, it works now.
Another difference learned. I'm discovering new stuffs in Ruby every day.

Regards,
Sam









(e-mail address removed)
01/09/2006 05:54 PM
Please respond to
(e-mail address removed)


To
(e-mail address removed) (ruby-talk ML)
cc

Subject
Re: regexp problem - differences in Perl and Ruby
Classification







Hi --

I got different results in Perl and Ruby of this regular expression. Can
somebody maybe give me a "Ruby Way" solution of this? The output from
Perl is what I want. But I'm currently programming this is Ruby.

def transform_data(data)
if (data=~/^[\d\.]+$/) #numbers
puts "Got here!"
else
puts("'" + data + "'")
end
end

data = "patched 3 systems:
134.27.56.237
134.27.59.6
134.27.55.43"

transform_data(data)
#snippet end ============

Output is:
Got here!

Now why would it match in Ruby? Am I missing something here?

^ and $ match start and end of line, not string. For start and end of
string, you want \A and \z (or \Z to ignore final newline).


David

--
David A. Black
(e-mail address removed)

"Ruby for Rails", from Manning Publications, coming April 2006!
http://www.manning.com/books/black



--=_alternative 000B79BE882570F2_=--
 
S

Sam Dela Cruz

--=_alternative 000BC0FF882570F2_=
Content-Type: text/plain; charset="US-ASCII"

Oops sorry, typo, I mean when I replaced ^ with \A and $ with \z

Regards,
Sam









Sam Dela Cruz <[email protected]>
01/09/2006 06:05 PM
Please respond to
(e-mail address removed)


To
(e-mail address removed) (ruby-talk ML)
cc

Subject
Re: regexp problem - differences in Perl and Ruby
Classification







Thanks David.

Yes, after I replaced ^ with \A and $ with \a, it works now.
Another difference learned. I'm discovering new stuffs in Ruby every day.

Regards,
Sam









(e-mail address removed)
01/09/2006 05:54 PM
Please respond to
(e-mail address removed)


To
(e-mail address removed) (ruby-talk ML)
cc

Subject
Re: regexp problem - differences in Perl and Ruby
Classification







Hi --

I got different results in Perl and Ruby of this regular expression. Can
somebody maybe give me a "Ruby Way" solution of this? The output from
Perl is what I want. But I'm currently programming this is Ruby.

def transform_data(data)
if (data=~/^[\d\.]+$/) #numbers
puts "Got here!"
else
puts("'" + data + "'")
end
end

data = "patched 3 systems:
134.27.56.237
134.27.59.6
134.27.55.43"

transform_data(data)
#snippet end ============

Output is:
Got here!

Now why would it match in Ruby? Am I missing something here?

^ and $ match start and end of line, not string. For start and end of
string, you want \A and \z (or \Z to ignore final newline).


David

--
David A. Black
(e-mail address removed)

"Ruby for Rails", from Manning Publications, coming April 2006!
http://www.manning.com/books/black




--=_alternative 000BC0FF882570F2_=--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,163
Latest member
Sasha15427
Top