2013-08-27 3 views

ответ

6

Правильное выражение /z*/ соответствует 0 или более z символов, поэтому оно также соответствует пустой строке в начале строки. Рассмотрим следующее:

"abbcccddddeeee" =~ /z*/ 
# => 0 

Таким образом, String#[] возвращает пустую строку с пустым знаком.

В вашем втором примере выражения /missing/ и /\Aend/ не соответствуют ничему, поэтому возвращается nil.

9

Что происходит, что /z*/ вернется ноль или более вхождения z.

Если вы используете /z+/, который возвращает один или несколько, вы увидите, что он возвращает nil, как ожидалось.

0

* wild-card обозначает 0 или более совпадений, поэтому даже если ваш z нет, он будет показывать пустую строку. с другой стороны, вы можете использовать + за 1 или больше и ? за ноль и больше.

Смежные вопросы