La documentación dice que \ s es un espacio en blanco y \ S no es un espacio en blanco. Hasta ahora, nada nuevo para los usuarios de regex.Postgres regex: Comportamiento de s y S y la clase de caracteres parece incorrecta
Pero vamos a ver algunos valores de retorno:
SELECT SUBSTRING('abc a c' FROM 'a\\sc');
'a c'
SELECT SUBSTRING('abc a c' FROM 'a[\\s]c'); -- Note the character class
'a c'
SELECT SUBSTRING('abc a c' FROM 'a\\Sc');
'abc'
SELECT SUBSTRING('abc a c' FROM 'a[\\S]c'); -- Note the character class
ERROR: invalid regular expression: invalid escape \ sequence
por lo que parece, \ s se puede utilizar en una clase de caracteres y \ S no puede. ¿Por qué?
Thx, que se pasa por alto esto. Por cierto, por supuesto, los corchetes son redundantes en mi código de ejemplo simplificado. – Leif
La razón por la que son ilegales es porque 'a [^ \ s] c' funciona bien para la negación. – hhaamu