Bug with end of string characters in regex?

/\A\n\Z/m.match("\n\n") => #<MatchData>

shouldn't this expression return nil?

These both return nil.
/\A\n\Z/m.match("a\n")
/\A\n\Z/m.match("\na")

My understanding is that \A and \Z always match at the beginning/end of
the string irrespective of newlines.

-Justin

···

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

Justin Coyne wrote:

/\A\n\Z/m.match("\n\n") => #<MatchData>

shouldn't this expression return nil?

These both return nil.
/\A\n\Z/m.match("a\n")
/\A\n\Z/m.match("\na")

My understanding is that \A and \Z always match at the beginning/end of
the string irrespective of newlines.

-Justin

Check out rubular.com

You are asking for:

\A # beginning of string
\n # newline
\Z # end of string

And by the way ... "\n" and /\n/ may not be the same, depending on what
the regexp wants to do with the backslash! you could try escaping it.
What do you want to match?
maybe:
/A # beginning of string
.* # any characters
\\n # newline
.* # any characters
/Z # end of string

···

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

Looks like I've solved my own problem the \Z in ruby doesn't have the
same semantics as it does in other languages. There is a \z which is
what I wanted so as expected:

/\A\n\z/m.match("\n\n") => nil

-Justin

···

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

\z end of a string
\Z end of a string, or before newline at the end

So, \Z allows an extra \n at the end of the string.

Jesus.

···

On Wed, Jan 13, 2010 at 6:33 PM, Justin Coyne <digger250@gmail.com> wrote:

Looks like I've solved my own problem the \Z in ruby doesn't have the
same semantics as it does in other languages. There is a \z which is
what I wanted so as expected:

/\A\n\z/m.match("\n\n") => nil

For the reference here's the doc:
http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt

Cheers

robert

···

2010/1/13 Jesús Gabriel y Galán <jgabrielygalan@gmail.com>:

On Wed, Jan 13, 2010 at 6:33 PM, Justin Coyne <digger250@gmail.com> wrote:

Looks like I've solved my own problem the \Z in ruby doesn't have the
same semantics as it does in other languages. There is a \z which is
what I wanted so as expected:

/\A\n\z/m.match("\n\n") => nil

\z end of a string
\Z end of a string, or before newline at the end

So, \Z allows an extra \n at the end of the string.

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Good to know thanks. I copied the quote from:

Thanks.

Jesus.

···

On Thu, Jan 14, 2010 at 12:50 PM, Robert Klemme <shortcutter@googlemail.com> wrote:

2010/1/13 Jesús Gabriel y Galán <jgabrielygalan@gmail.com>:

On Wed, Jan 13, 2010 at 6:33 PM, Justin Coyne <digger250@gmail.com> wrote:

Looks like I've solved my own problem the \Z in ruby doesn't have the
same semantics as it does in other languages. There is a \z which is
what I wanted so as expected:

/\A\n\z/m.match("\n\n") => nil

\z end of a string
\Z end of a string, or before newline at the end

So, \Z allows an extra \n at the end of the string.

For the reference here's the doc:
サービス終了のお知らせ