Dziwne podstawianie ukośnika w Ruby

Nie rozumiem tego kodu Ruby:

>> puts '\\ <- single backslash'
# \ <- single backslash

>> puts '\\ <- 2x a, because 2 backslashes get replaced'.sub(/\\/, 'aa')
# aa <- 2x a, because two backslashes get replaced

jak dotąd, wszystko zgodnie z oczekiwaniami. ale jeśli szukamy 1 z/\\/i zastąp 2 kodowanym przez'\\\\', dlaczego to otrzymujemy:

>> puts '\\ <- only 1 ... replace 1 with 2'.sub(/\\/, '\\\\')
# \ <- only 1 backslash, even though we replace 1 with 2

a następnie, gdy kodujemy 3 za pomocą'\\\\\\', dostajemy tylko 2:

>> puts '\\ <- only 2 ... 1 with 3'.sub(/\\/, '\\\\\\')
# \\ <- 2 backslashes, even though we replace 1 with 3

każdy, kto jest w stanie zrozumieć, dlaczego ukośnik zostaje połknięty w ciągu zastępującym? dzieje się to w 1.8 i 1.9.

questionAnswers(5)

yourAnswerToTheQuestion