Ответ 1
Если я правильно помню, это означает global
, который эта страница Wiki подтверждает:
Флаг g означает глобальный - каждый появление в строке изменяется, а не только первый.
Оба Ruby и Vim используют "g" с командами подстановки, чтобы означать "все вхождения". Что означает "g" ?
В частности, в Ruby String class имеет две команды "sub": sub
заменит только первое вхождение и gsub
заменит все вхождения. Например:
string = "One potato, two potato, three potato, four."
string.sub('potato','banana') # => "One banana, two potato, three potato, four."
string.gsub('potato','banana') # => "One banana, two banana, three banana, four."
Аналогично, в Vim, :%s/foo/bar
будет просматривать весь файл (что означает %
) и заменить одно вхождение на строку, но :%s/foo/bar/g
будет делать все вхождения в каждой строке.
Мое предположение было бы в том, что в обоих случаях "g" означает "жадный", потому что и команды Ruby, и команда Vim принимают регулярное выражение, но мое понимание жадного соответствия "соответствует максимально возможной подстроке, соответствующей этим критериям," не "соответствуют как можно большему количеству подстрок". (См. " Остерегайтесь жадности!" )
Если я правильно помню, это означает global
, который эта страница Wiki подтверждает:
Флаг g означает глобальный - каждый появление в строке изменяется, а не только первый.
Я думаю, что это означает "глобальный".
После помощи vim от :help :s
до :help s_flags
до :help gdefault
говорится:
'gdefault' 'gd' boolean (default off)
global
Я думал, что "g" означает глобальное, но я могу ошибаться.
Я считаю флаг g
в regex == gloabl
замене. Вероятно, это то же самое для Ruby.
Я думаю, "g" означает " жадный". Это ближе к основам регулярных выражений.