Подтвердить что ты не робот

Получение оператора Star Regex

Я не уверен, что мой мозг измучен, или я просто думаю об этом слишком тяжело. Следующий код представлен about_regular_expressions в Ruby Koans.

def test_asterisk_means_zero_or_more
   assert_equal "abb", "abbcccddddeeeee"[/ab*/]  
   assert_equal "a", "abbcccddddeeeee"[/az*/]  
   assert_equal "", "abbcccddddeeeee"[/z*/]  

 # THINK ABOUT IT:
 #
 # When would * fail to match?
end  

Как вы получаете *, чтобы не совпадать?

Когда я говорю об ошибке, я предполагаю, что они хотят, чтобы assert_equal возвращал нуль. Я знаю, что одним из способов было бы сделать \ перед *, чтобы регулярное выражение явно искал символ *, но я уверен, что это не то, что они подразумевают.

4b9b3361

Ответ 1

Может быть, ответ на вопрос "когда будет * не соответствовать" "никогда".

Ответ 2

Так как * всегда принимает пустую строку, она будет терпеть неудачу, если у вас есть что-то до или после него, которое не соответствует. Например, ab*c не будет соответствовать azc, так как b* не будет соответствовать z и c не будет соответствовать zc.