Why the six backslashes? Because I wanted the second parameter to `String#gsub` to be the string `\\\1`, since it gets interpreted for backreferences (thus `\\` for a literal backslash and `\1` for a backreference to group 1). But to put that literal string in the code meant escaping all three of _those_ backslashes, so it became `'\\\\\\1'` in the code.

Maybe a pry session is worth a thousand words:

```
[1] pry(main)> string = "a-b-c-d-e"
=> "a-b-c-d-e"
[2] pry(main)> puts string;
a-b-c-d-e
[3] pry(main)> puts string.gsub(/(-)/, '\\\\1');
a\1b\1c\1d\1e
[4] pry(main)> puts string.gsub(/(-)/, '\\\\\\1');
a\-b\-c\-d\-e
```