Ukośnik odwrotny jest traktowany przez Django jako metaznak i jest interpretowany wewnątrz podwójnych cudzysłowów. Tak więc jedna warstwa E'\\s+') zostaje usunięty, zanim ciąg dotrze do serwera PostgreSQL, który zobaczy E'\s+') . Łańcuch ucieczki da w wyniku 's+' co z kolei spowoduje, że regexp_split_to_table() podziel swoje ciągi na dowolną liczbę s zamiast przestrzeni niedrukowalnej, która jest skrótem klasy znaku \s oznacza w wyrażeniach regularnych.
Podwój swoje odwrotne ukośniki w ciągu, aby uzyskać to, co zamierzałeś:E'\\\\s+') :
"SELECT regexp_split_to_table(field_name, E'\\\\s+') FROM mytable LIMIT 20"
Alternatywnie, aby uniknąć problemów ze specjalnym znaczeniem odwrotnego ukośnika \ , możesz użyć [[:space:]] do oznaczenia tej samej klasy znaków:
"SELECT regexp_split_to_table(field_name, '[[:space:]]+') FROM mytable LIMIT 20"
Szczegóły w rozdziale " Dopasowywanie wzorców” w instrukcji .