Понимание того, как сопоставление с образцом работает в Ruby 2 - PullRequest
0 голосов
/ 22 июня 2010

Я не знаю, как работает сопоставление с образцом в Ruby 2.

У меня есть следующее значение, targetfilename = /mnt/usb/mpeg4Encoded.mpeg4

Мое сопоставление с образцом, если-иначе, так:

if (targetfilename.match(/^\//))
  puts "amit"
else 
  puts "ramit"

Выход ramit.

Я не понимаю, как работает это сопоставление с образцом.

1 Ответ

1 голос
/ 22 июня 2010
if targetfilename.match(/^V/)
  puts "amit"
else
  puts "ramit"
end

# result:
# "amit"

Почему это?Это связано с тем, что targetfilename.match(/^V/) выводит объект Matchdata (нажмите на ссылку для полного описания этого объекта).Это объект, который содержит всю информацию, которая находится в «совпадении».Если совпадений нет, объект MatchData не возвращается, потому что возвращать нечего.Вместо этого вы получаете nil.

Когда вы используете if, если он пытается сравнить nil, он обрабатывает его так же, как false.

В основном,любое «фактическое» значение (кроме false) обрабатывается так же, как и true.По сути, он спрашивает

if (there's anything here)
  do_this
else
  do_something_else
end

Снова, позвольте мне повторить:

Если вещь после if имеет значение false или nil ,оператор if преобразуется в «else».Если это что-нибудь еще , оно разрешается, как если бы оно получило «истинное» утверждение.


Регулярные выражения

/^V/это то, что называется «регулярное выражение»;// является литералом Regexp так же, как "" является литералом String, а Regexps представлены классом Regexp так же, как строки представлены классом String.

Фактический "регулярное выражение "это то, что между слешами - ^V.Это говорит:

  • ^: начало строки
  • V: заглавная буква V

Итак, /^V/будет соответствовать любому регистру заглавной буквы "V" в начале строки.

Что еще можно вставить в регулярное выражение?Какие специальные символы?Попробуйте это regexp шпаргалку

Также, некоторые замечательные инструменты:

  • Rubular - введите в ваше регулярное выражение, а затемтот же текст, и посмотрите, что соответствует.
  • Strfriend - введите регулярное выражение и увидите его "визуально" представленным.
...