Ответ 1
Может быть, ответ на вопрос "когда будет * не соответствовать" "никогда".
Я не уверен, что мой мозг измучен, или я просто думаю об этом слишком тяжело. Следующий код представлен 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
возвращал нуль. Я знаю, что одним из способов было бы сделать \
перед *
, чтобы регулярное выражение явно искал символ *
, но я уверен, что это не то, что они подразумевают.
Может быть, ответ на вопрос "когда будет * не соответствовать" "никогда".
Так как *
всегда принимает пустую строку, она будет терпеть неудачу, если у вас есть что-то до или после него, которое не соответствует. Например, ab*c
не будет соответствовать azc
, так как b*
не будет соответствовать z
и c
не будет соответствовать zc
.