Подтвердить что ты не робот

Что означает "g" в Ruby "gsub" и в команде замены Vim?

Оба 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 принимают регулярное выражение, но мое понимание жадного соответствия "соответствует максимально возможной подстроке, соответствующей этим критериям," не "соответствуют как можно большему количеству подстрок". (См. " Остерегайтесь жадности!" )

4b9b3361

Ответ 1

Если я правильно помню, это означает global, который эта страница Wiki подтверждает:

Флаг g означает глобальный - каждый появление в строке изменяется, а не только первый.

Ответ 2

Я думаю, что это означает "глобальный".

После помощи vim от :help :s до :help s_flags до :help gdefault говорится:

'gdefault' 'gd'         boolean (default off)
                        global

Ответ 3

Я думал, что "g" означает глобальное, но я могу ошибаться.

Ответ 4

Я считаю флаг g в regex == gloabl замене. Вероятно, это то же самое для Ruby.

Ответ 5

Я думаю, "g" означает " жадный". Это ближе к основам регулярных выражений.