バックスラッシュはDjangoによってメタ文字として扱われ、二重引用符で囲まれて解釈されます。したがって、E'\\s+')
の1つのレイヤー 文字列がPostgreSQLサーバーに到着する前に削除されます。PostgreSQLサーバーにはE'\s+')
が表示されます。 。エスケープ文字列は's+'
になります これにより、regexp_split_to_table()
が作成されます。 文字列を任意の数のs
で分割します 非印刷スペースの代わりに、文字クラスの省略形\s
正規表現の略です。
文字列のバックスラッシュを2倍にして、意図したものを取得します:E'\\\\s+')
:
"SELECT regexp_split_to_table(field_name, E'\\\\s+') FROM mytable LIMIT 20"
別の方法として、円記号の特別な意味に関する問題を回避するために\
、[[:space:]]
を使用できます 同じ文字クラスを示すには:
"SELECT regexp_split_to_table(field_name, '[[:space:]]+') FROM mytable LIMIT 20"