2016-05-13 2 views
0

split(%r{\s*}) расщепляется каждое письмо, игнорируя пробелы как в:Значение `разделения (% г { с *})`

"hi mom".split(%r{\s*}) # => ["h", "i", "m", "o", "m"] 

Почему может %r{\s*} работать таким образом?

+0

Выполнение '% r {\ s *}' возвращает '/ \ s * /'. Означает ли это, что это более ясно? Это одна из [процентных строк] Ruby (http://ruby-doc.org/core-2.3.0/doc/syntax/literals_rdoc.html). (Искать «процентные строки».) –

+2

Непонятно, каков ваш вопрос. Что смущает вас о том, как работает этот код? –

+0

http://meta.stackoverflow.com/questions/253894/how-to-handle-explain-how-this-code-dump-works-questions/253896#comment17104_253896 –

ответ

2

%r{...} (или %r[...] или %r#....# или %rX...X ... Вы получаете суть) эквивалентно /.../, в RegExp буквальным. В регулярном выражении \s - это пробел, а * - это 0 или более предшествующего токена: вместе выражение выражает «разбиение строки в каждой точке имеет нулевое или большее количество пробелов». Между каждым символом строки есть ноль или больше пробелов (кроме пробела, который проглатывается как распознанный разделитель).

1

%r{\s*} соответствует произвольной позиции нулевой ширины или одному или нескольким местам, которые исключены из результата разделения.

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