okkezSS
November 13, 2010, 8:06pm
1
Hi, I have a very simple regex question.
I don’t understand why the regex in the example below isn’t identifying
that the string is longer than 12 characters long…
line = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
=> “xxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
if line =~ /[a-zA-Z]{2,12}/
puts “good”
else
?> puts “bad”
end
good
=> nil
Any ideas?
Many thanks in advance!
On 11/13/2010 01:06 PM, Geometric Patterns wrote:
?> puts “bad”
end
good
=> nil
Any ideas?
Your regexp will match anywhere within the string where there is a run
of 2 to 12 characters. If you want to ensure that there is nothing
before or after whatever is matched, you need to use the begin and end
of string anchors as follows when you define your regexp:
/\A[a-zA-Z]{2,12}\z/
-Jeremy
On Sat, Nov 13, 2010 at 11:06 AM, Geometric Patterns
[email protected] wrote:
I don’t understand why the regex in the example below isn’t identifying
that the string is longer than 12 characters long…
if line =~ /[a-zA-Z]{2,12}/
That succeeds if the string contains between 2 and 12 characters,
not if it consists solely of 2-12 characters.
line = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
if line =~ /[a-zA-Z]{2,12}/
puts “good” # you’ll get this
else
puts “bad”
end
if line =~ /\A[a-zA-Z]{2,12}\Z/
puts “good”
else
puts “bad” # you’ll get this
end
FWIW,