Casi todos los metacaracteres (incluido el punto . , el + , * y ? cuantificadores, el ancla de fin de cadena $ , etc.) no tienen un significado especial en las clases de caracteres, con algunas excepciones notables:
- corchete de cierre
], por razones obvias - intercalación
^, que se utiliza para negar la clase de carácter (p. ej.:[^ab]coincide con cualquier carácter peroayb). - guion
-, que se usa para indicar un rango (por ejemplo:[0-9]coincide con cualquier dígito)
Sin embargo, aún se pueden agregar sin escapar si se colocan en ubicaciones estratégicas dentro de la clase de personaje:
- el corchete de cierre se puede colocar justo después del corchete de apertura, por ejemplo:
[]a]coincide con]oa. - el signo de intercalación se puede colocar en cualquier lugar menos después del paréntesis de apertura, por ejemplo:
[a^]coincide con^oa - el guión se puede colocar justo después del paréntesis de apertura o antes del paréntesis de cierre, por ejemplo:
[-a]y[a-]ambos coinciden conay-.
Se puede encontrar más información en la página man en POSIX regex
(¡gracias Tomalak Geret'kal!)