从开头,之间,结尾删除空格

时间:2015-01-21 07:39:56

标签: regex postgresql

我有一个fallowing字符串' this is my string '是否可以从开头和结尾删除所有空格,并且在单词之间只有一个空格。

选择我用过的所有空格:

SELECT regexp_replace('   this  is my  string   ', '[ ]{2,}', '', 'g');

问题在于单词之间的两个空格。

3 个答案:

答案 0 :(得分:2)

使用锚点。

SELECT regexp_replace('   this  is my  string   ', '^ +| +$|( ) +', '\1', 'g');

DEMO

  • ^ +匹配所有前导的一个或多个空格。
  • |
  • <space>+$匹配所有尾随空格。
  • |或(即来自重新唤醒的字符串)
  • ( ) +捕获第一个空格并匹配以下所有空格。
  • 用组索引1替换所有匹配的空格将为您提供所需的输出。

答案 1 :(得分:2)

SELECT 
trim(both ' ' from regexp_replace('    this  is my  string   ', '  +', ' ', 'g'));

答案 2 :(得分:2)

您可以使用:

SELECT regexp_replace('   this  is my  string   ', '^ +| +$| +(?= )', '', 'g');

RegEx Demo

这将删除以下所有空格:

  1. 开始
  2. 将中间的多个空格转换为单个空格
  3. <强>解释

    • ^ +| +$匹配字符串开头或结尾处的空格
    • +(?= )是一个积极的向前看,只有在至少一个空格后才会匹配1个或多个空格
    • 替换是空字符串。