Насчет дефиса:
Дефис выполняет функции метасимвола только внутри символьного класа — в остальных случаях он совпадает с обычным дефисом. Более того, даже в символьных классах дефис не всегда интерпретируется как метасимвол. Если дефис является первым символом, указанным в классе, он заведомо не может определять интервал и поэтому интерпретируется как литерал. Аналогично, вопросительный знак и точка в конце класса считаются метасимволами в контексте обычных регулярных выражений, но не в контексте класса.