Ответ 1
Вы можете совместить начало строки с \A
, а конец - с \Z
. В ruby ^
и $
соответствуют также начало и конец строки:
>> "a\na" =~ /^a$/
=> 0
>> "a\na" =~ /\Aa\Z/
=> nil
>> "a\na" =~ /\Aa\na\Z/
=> 0
Как строка с регулярным выражением, чтобы она возвращала значение true, если строка целое соответствует (а не подстроке)?
например:
test( \ee\ , "street" ) #=> returns false
test( \ee\ , "ee" ) #=> returns true!
Спасибо.
Вы можете совместить начало строки с \A
, а конец - с \Z
. В ruby ^
и $
соответствуют также начало и конец строки:
>> "a\na" =~ /^a$/
=> 0
>> "a\na" =~ /\Aa\Z/
=> nil
>> "a\na" =~ /\Aa\na\Z/
=> 0
Кажется, это работает для меня, хотя он выглядит уродливым (возможно, более привлекательным способом это можно сделать):
!(string =~ /^ee$/).nil?
Конечно, все внутри//выше может быть любым регулярным выражением, которое вы хотите.
Пример:
>> string = "street"
=> "street"
>> !(string =~ /^ee$/).nil?
=> false
>> string = "ee"
=> "ee"
>> !(string =~ /^ee$/).nil?
=> true
Примечание. Протестировано в консоли Rails с рубином (1.8.7) и рельсами (3.1.1)
Итак, что вы спрашиваете, как проверить, равны ли две строки, правильно? Просто используйте равенство строк! Это проходит каждый один из примеров, которые цитировали вас и Томас:
'ee' == 'street' # => false
'ee' == 'ee' # => true
"a\na" == 'a' # => false
"a\na" == "a\na" # => true