【问题标题】:Regex replace to a string without space at the end and beginning正则表达式替换为结尾和开头没有空格的字符串
【发布时间】:2021-07-07 15:39:57
【问题描述】:

我想从字符串中删除以下字符 {}、_ 并将其设为 initcap。

{OTHER_QUESTIONS,MISSING_DOCUMENT}

期望的结果:

Other Questions, Missing Document

我尝试了以下方法,但它为第一个和最后一个字符增加了空格,那么我怎样才能达到上述预期的结果?

regexp_replace(INITCAP('{OTHER_QUESTIONS,MISSING_DOCUMENT}'), '[{}_]', ' ', 'g'),

【问题讨论】:

  • TRIM(BOTH FROM regexp_replace(INITCAP('{OTHER_QUESTIONS,MISSING_DOCUMENT}'), '[{}_]', ' ', 'g')) 这也将删除前导和尾随空格。
  • 是不是也意味着,后面要加一个空格,如果没有呢?
  • @WiktorStribiżew 是的,完全正确!

标签: regex postgresql regexp-replace


【解决方案1】:

你可以使用

SELECT INITCAP(
  TRIM(
    REGEXP_REPLACE(REGEXP_REPLACE('{OTHER_QUESTIONS,MISSING_DOCUMENT}', ',(\S)', ', \1', 'g'), '[{}_]+', ' ', 'g')
  )
)

an SQL fiddle

,(\S) 正则表达式将匹配逗号并将其后的任何非空白字符捕获到第 1 组,替换将, \1,即逗号、空格和第 1 组值。然后,[{}_]+ 正则表达式将匹配所有出现的一个或多个 {}_ 字符,而 regexp_replace 将用空格替换它们,trim 将删除前导/尾随空格。

【讨论】:

    【解决方案2】:

    只需去掉 Regex 中的空格,''-->'',替换:

    regexp_replace(INITCAP('{OTHER_QUESTIONS,MISSING_DOCUMENT}'), '[{}_]', ' ', 'g')
    

    regexp_replace(INITCAP('{OTHER_QUESTIONS,MISSING_DOCUMENT}'), '[{}_]', '', 'g')
    

    【讨论】:

      猜你喜欢
      • 2018-08-14
      • 2023-03-03
      • 2015-03-20
      • 2021-07-04
      • 1970-01-01
      • 2013-08-04
      相关资源
      最近更新 更多