Hunt_J
1
Hi
I’m trying to find good use examples to show a difference
between ^ and \A in Ruby regular expressions.
\A is for beginning of a string
^ beginning of a line or string
As a regular expression runs one line by line (if I’m correct),
I think both are the same.
I’m a little confused with when to use which.
Jon
Hunt_J
2
On Sat, Sep 19, 2009 at 9:39 PM, Hunt J. [email protected]
wrote:
Hi
I’m trying to find good use examples to show a difference
between ^ and \A in Ruby regular expressions.
\A is for beginning of a string
^ beginning of a line or string
As a regular expression runs one line by line (if I’m correct),
I think both are the same.
No you are not correct, and they aren’t the same:
irb(main):001:0> /\Axyzzy/ =~ “xyzzy”
=> 0
irb(main):002:0> /\Axyzzy/ =~ “abc\nxyzzy”
=> nil
irb(main):003:0> /^xyzzy/ =~ “xyzzy”
=> 0
irb(main):004:0> /^xyzzy/ =~ “abc\nxyzzy”
=> 4
–
Rick DeNatale
Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale
Hunt_J
3
Hunt J. wrote:
Hi
I’m trying to find good use examples to show a difference
between ^ and \A in Ruby regular expressions.
\A is for beginning of a string
^ beginning of a line or string
As a regular expression runs one line by line (if I’m correct),
I think both are the same.
What does “runs one line by line” mean? A regular expression may
examine the whole darn string–character by character. For example:
str = “abc\n123”
results = str.scan(/./m)
p results
–output:–
[“a”, “b”, “c”, “\n”, “1”, “2”, “3”]
Do you consider that “runs one line by line”?
\A matches just before the FIRST character of a string–and nowhere
else:
str = “abc\n123”
results = str.scan(/\A…/)
p results
–output:–
[“abc”]
^ matches just before the first character of a string, AND just
after any newline:
str = “abc\n123”
results = str.scan(/^…/)
p results
–output:–
[“abc”, “123”]
If your string doesn’t have any newlines, guess what?
str = “abc123”
results = str.scan(/\A…/)
p results
–output:–
[“abc”]
str = “abc123”
results = str.scan(/^…/)
p results
–output:–
[“abc”]
… \A and ^ are equivalent.
Hunt_J
4
Thanks all. Now I understand how they work.
Thanks.