That is because just using
" as the string delimiters turns on special characters like that.
To turn it off there are a few ways, the usual one is via using the
~S (capital S) sigil, which turns interpolation and special characters off, thus:
EDIT1: For note,
" basically is like having an implied
~s before it. You can change the delimiter to a certain set if you want,
/ and a half dozen others are all valid, so
~s/blah/ == "blah" is true.
EDIT2: Also, the
r sigil both defines a string and passes it to regex compile all in the same step, so your original example could be done like:
iex> regex_str = "^\\d+,$"
The inspection protocol for compiled regex’s just converts the compiles regex into the sigil form for easy copy/pasting into the shell, but that is not how it really is internally. The inspection protocol is for ease of ‘you’ reading it, not how it really is.
EDIT3: There are lots of sigils, you can even make your own, all documented at: