我从用户那里获取的数据可能非常不可靠。所以在将它保存到 PostgreSQL 数据库之前,我必须清除字符串开头和结尾的所有多余字符。
这有可能实现吗?
' \n \t \n \r\n abc_def_\n xyz \r\n ' to 'abc_def_\n xyz'
是否还有其他我应该关心的空白字符?
\n newline \r carriage return \t horizontal tab whitespace
最佳答案
我原以为 \s
会覆盖所有空白,但 Postgres 的 REGEXP_REPLACE
似乎并非如此。相反,我使用字符类 [\r\n\t ]
来表示您要删除的所有空格,效果很好。此外,您确实希望仅从列的开头和结尾而不是中间的部分修剪此类空白,因此我们可以搜索以下正则表达式模式:
^[\r\n\t ]*|[\r\n\t ]*$
然后替换为空字符串,将其删除。
WITH yourTable AS (
SELECT ' \n \t \n \r\n abc_def_\n xyz \r\n '::text AS col
)
SELECT
col,
REGEXP_REPLACE(col, '^[\\r\\n\\t ]*|[\\r\\n\\t ]*$', '', 'g') AS col_updated
FROM yourTable;
Demo
关于regex - 如何从字符串的开头和结尾删除换行符、回车符和水平制表符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52177883/