Regular Expression question

Hello,

Im working with regular expressions and I cant quite understand how the
"13" is extracted from the string.

Here is the irb output:
irb(main):005:0> "(13)"[1..-2].to_i
=> 13

I dont understadn how the [1..-2] parameter removes the parenthases from
the string.

Could someone please explain.

Thanks in advance.

···

--
Posted via http://www.ruby-forum.com/.

"(13)"[0] = "("
"(13)"[1] = "1"
"(13)"[2] = "3"
"(13)"[3] = ")"

"(13)"[-1] = ")"
"(13)"[-2] = "3"
"(13)"[-3] = "1"
"(13)"[-4] = "("

"-N" counts from the end, starting with -1.

-2 is the character just before the end (the 3). 1 is the character just after
the beginning (the 1).

From "just after the beginning" to "just before the end" is the string without
the parentheses.

However, I must correct you: You are not working with regular expressions.
There are no regular expressions here, only array slices.

-s

···

In message <0df4a451b19810ff6e06f11725324591@ruby-forum.com>, Al Cholic writes:

Im working with regular expressions and I cant quite understand how the
"13" is extracted from the string.
Here is the irb output:
irb(main):005:0> "(13)"[1..-2].to_i
=> 13
I dont understadn how the [1..-2] parameter removes the parenthases from
the string.

"(13)"[0] = "("
"(13)"[1] = "1"
"(13)"[2] = "3"
"(13)"[3] = ")"

"(13)"[-1] = ")"
"(13)"[-2] = "3"
"(13)"[-3] = "1"
"(13)"[-4] = "("

"-N" counts from the end, starting with -1.

Thanks. An the .. in [1..-2] means "keep everything in between" ?

···

--
Posted via http://www.ruby-forum.com/\.

Maybe it would not hurt to add a little clarification, albeit the fact
that your didactic simplification has worked very well :). Especially
as this concerns a FAQ

In reality
"(13)"[0] => ?( which equals 40
and
"(13)"[0..0] => "("

Cheers
Robert

···

On 6/30/07, Peter Seebach <seebs@seebs.net> wrote:

In message <0df4a451b19810ff6e06f11725324591@ruby-forum.com>, Al Cholic writes:
>Im working with regular expressions and I cant quite understand how the
>"13" is extracted from the string.
>Here is the irb output:
>irb(main):005:0> "(13)"[1..-2].to_i
>=> 13
>I dont understadn how the [1..-2] parameter removes the parenthases from
>the string.

"(13)"[0] = "("
"(13)"[1] = "1"
"(13)"[2] = "3"
"(13)"[3] = ")"

"(13)"[-1] = ")"
"(13)"[-2] = "3"
"(13)"[-3] = "1"
"(13)"[-4] = "("

--
I always knew that one day Smalltalk would replace Java.
I just didn't know it would be called Ruby
-- Kent Beck

Right.

So, "hello, world!"[1..-2] => "ello, world"

-s

···

In message <a0d519101f6199ed9f37558d7cec5351@ruby-forum.com>, Al Cholic writes:

Thanks. An the .. in [1..-2] means "keep everything in between" ?

:

Maybe it would not hurt to add a little clarification, albeit the fact
that your didactic simplification has worked very well :). Especially
as this concerns a FAQ

Oops, doh!

You are correct, of course.

-s

···

In message <335e48a90706300032p287c0afepc307adabc12dfb73@mail.gmail.com>, "Robert Dober" writes

unknown wrote:

···

In message <a0d519101f6199ed9f37558d7cec5351@ruby-forum.com>, Al Cholic > writes:

Thanks. An the .. in [1..-2] means "keep everything in between" ?

Right.

So, "hello, world!"[1..-2] => "ello, world"

-s

Thank you very much.

--
Posted via http://www.ruby-forum.com/\.