ruby ​​rspec и сравнение строк

Я не эксперт по рубинам, и, возможно, это покажется глупым вопросом ... но я слишком смел по поводу странности (я думаю) Я » Он находится в сопоставлении RSpec и называется match.

Вы знаете, что match принимает на входе строку или регулярное выражение. Пример:

"test".should match "test" #=> will pass
"test".should match /test/ #=> will pass

Странность начинается, когда вы вставляете специальные символы регулярного выражения во входную строку:

"*test*".should match "*test*" #=> will fail throwing a regex exception

Это означает (я думал), что входные строки интерпретируются как регулярное выражение, тогда мне нужно избегать специальных символов регулярного выражения, чтобы оно работало:

"*test*".should match "\*test\*" #=> will fail with same exception
"*test*".should match /\*test\*/ #=> will pass

Из этого базового теста я понимаю, что match обрабатывает входные строки как регулярные выражения, но это не позволяет вам экранировать специальные символы регулярного выражения.

Верно ли я? Разве это не странное поведение? Я имею в виду, это строка или регулярное выражение!


ИЗМЕНИТЬ ПОСЛЕ ОТВЕТА:

После DigitalRoss (справа) ответьте, что следующие тесты пройдены:

"*test*".should match "\\*test\\*" #=> pass
"*test*".should match '\*test\*' #=> pass
"*test*".should match /\*test\*/ #=> pass
16
задан Emiliano Poggi 24 April 2011 в 18:03
поделиться