Я не понимаю этот код Ruby:
>> puts '\\ <- single backslash'
# \ <- single backslash
>> puts '\\ <- 2x a, because 2 backslashes get replaced'.sub(/\\/, 'aa')
# aa <- 2x a, because two backslashes get replaced
до сих пор, как и ожидалось. но если мы ищем 1 с /\\/
и заменим на 2, закодированные '\\\\'
, почему мы получаем это:
>> puts '\\ <- only 1 ... replace 1 with 2'.sub(/\\/, '\\\\')
# \ <- only 1 backslash, even though we replace 1 with 2
а затем, когда мы кодируем 3 с помощью '\\\\\\'
, получаем только 2:
>> puts '\\ <- only 2 ... 1 with 3'.sub(/\\/, '\\\\\\')
# \\ <- 2 backslashes, even though we replace 1 with 3
кто-нибудь может понять, почему обратная косая черта проглатывается в заменяющей строке? это происходит на 1,8 и 1,9.