Что делает амперсанд в приведенном ниже коде?
s.reverse.gsub( /\d{3}(?=\d)/, '\&,' ).reverse
После попытки найти такие вещи можно было бы подумать, что это специальная переменная, означающая post_match или pre_match, но в документации ничего не говорится об амперсандах - только знаки доллара, за которыми следует или перед ними стоит галочка.
1 ответ
\&
определяет всю строку, которой соответствует регулярное выражение. см. этот упрощенный пример:
s = "p1:1 1:1";
print s.gsub( /[a-z]/, '[\&],' ) ## only p is matched
Вывод: [p],1:1 1:1
Точно так же \1
определяет первую группу, совпадающую с регулярным выражением. (Аналогично для \ 2, \ 3 ... и так далее). Пример:
s = "p1:1 1:1";
print s.gsub( /(\d:\d)/, '[\1]' )
Вывод: p[1:1] [1:1]
Похожие вопросы
Новые вопросы
ruby
Ruby - это многоплатформенный динамический объектно-ориентированный интерпретируемый язык с открытым исходным кодом. Тег [ruby] предназначен для вопросов, связанных с языком Ruby, включая его синтаксис и его библиотеки. Вопросы Ruby on Rails должны быть помечены [ruby-on-rails].