regex - 如何从字符串的开头和结尾删除换行符、回车符和水平制表符?

标签 regex postgresql

我从用户那里获取的数据可能非常不可靠。所以在将它保存到 PostgreSQL 数据库之前,我必须清除字符串开头和结尾的所有多余字符。

  1. 这有可能实现吗?

    '   \n \t \n \r\n abc_def_\n xyz \r\n  ' to 'abc_def_\n xyz'
    
  2. 是否还有其他我应该关心的空白字符?

    \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;

enter image description here

Demo

关于regex - 如何从字符串的开头和结尾删除换行符、回车符和水平制表符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52177883/

相关文章:

javascript - 只允许数字的正则表达式

regex - 从压缩文件中提取正则表达式

javascript - 如何找到正确的日期正则表达式?

database - Golang-Postgres ..关闭数据库连接不适用于特定查询

postgresql - Scala:如何建立与 PostgreSQL 服务器的安全连接?

python - 需要帮助为我的字符串模式找到正确的正则表达式模式

c# - C# Regex 的多个正则表达式选项

ruby-on-rails - rails has_one 通过关系不存在

postgresql - pg_dump, dump options "pre-data", "data definition items"中包含的 "pre_data"是什么?

postgresql - Play Framework ,内存数据库中的 PostgreSQL,间隔不工作