"From what I understand, \1 matches any character except \n after ...."
Athanasius response is a good one, but, IMO, invites an alternate way to address a key element of your misconception. You can think of \1 and $1 as containers used to (temporarily) retain the matches found by the wildcards .
do NOT match anything, per se.
Explaining "temporarily is beyond the scope of this thread; just take care to assign the value in $1 (or any other of its ilk) to an ordinary, named variable (without $1's idiosyncrasies) as promptly as possible.
If you didn't program your executable by toggling in binary, it wasn't really programming!