As btrott suggests "a range is a range" so in your original
expression the hyphen is defining a range *-{ (i.e. all the ASCII
characters in the range 052 to 173) so this includes the characters
A through Z and a through z. Appart from escaping the hyphen how else
would the interpreter know that you meant a literal hyphen?