De backslash wordt door Django behandeld als meta-teken en wordt geïnterpreteerd tussen dubbele aanhalingstekens. Dus één laag E'\\s+')
wordt verwijderd voordat de string aankomt op de PostgreSQL-server, die E'\s+')
zal zien . De escape-tekenreeks resulteert in 's+'
wat op zijn beurt regexp_split_to_table()
. zal maken splits je strings op een willekeurig aantal s
in plaats van niet-afdrukbare spatie, die de tekenklasse wordt afgekort \s
staat voor in reguliere expressies.
Verdubbel je backslashes in de string om te krijgen wat je bedoelde:E'\\\\s+')
:
"SELECT regexp_split_to_table(field_name, E'\\\\s+') FROM mytable LIMIT 20"
Als alternatief, om problemen met de speciale betekenis van de backslash \
. te voorkomen , kunt u [[:space:]]
. gebruiken om dezelfde tekenklasse aan te duiden:
"SELECT regexp_split_to_table(field_name, '[[:space:]]+') FROM mytable LIMIT 20"
Details in het hoofdstuk " Pattern Matching" in de handleiding .