Zpětné lomítko Django považuje za metaznak a je interpretováno uvnitř dvojitých uvozovek. Takže jedna vrstva E'\\s+') se stáhne, než řetězec dorazí na server PostgreSQL, který uvidí E'\s+') . Řetězec escape bude mít za následek 's+' což zase vytvoří regexp_split_to_table() rozdělte své řetězce na libovolný počet s místo netisknutelného prostoru, což je zkratka třídy znaků \s znamená v regulárních výrazech.
Zdvojnásobte zpětná lomítka v řetězci, abyste získali to, co jste zamýšleli:E'\\\\s+') :
"SELECT regexp_split_to_table(field_name, E'\\\\s+') FROM mytable LIMIT 20"
Alternativně, abyste se vyhnuli problémům se speciálním významem zpětného lomítka \ , můžete použít [[:space:]] k označení stejné třídy znaků:
"SELECT regexp_split_to_table(field_name, '[[:space:]]+') FROM mytable LIMIT 20"
Podrobnosti v kapitole " Pattern Matching“ v příručce .