Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

regexp problem - differences in Perl and Ruby

0 views
Skip to first unread message

Sam Dela Cruz

unread,
Jan 9, 2006, 8:46:11 PM1/9/06
to
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

dbl...@wobblini.net

unread,
Jan 9, 2006, 8:54:22 PM1/9/06
to
Hi --

On Tue, 10 Jan 2006, Sam Dela Cruz wrote:

> 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
dbl...@wobblini.net

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


Sam Dela Cruz

unread,
Jan 9, 2006, 9:05:39 PM1/9/06
to
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

dbl...@wobblini.net
01/09/2006 05:54 PM
Please respond to
ruby...@ruby-lang.org


To
ruby...@ruby-lang.org (ruby-talk ML)
cc

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

Sam Dela Cruz

unread,
Jan 9, 2006, 9:08:37 PM1/9/06
to
Oops sorry, typo, I mean when I replaced ^ with \A and $ with \z

Regards,
Sam

Sam Dela Cruz <sam.dela.cruz...@philips.com>
01/09/2006 06:05 PM

0 new messages