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 .