正则表达式替换为结尾和开头没有 space 的字符串

Regex replace to a string without space at the end and beginning

我想从字符串中删除以下字符 {}, _ 并使其成为 initcap。

{OTHER_QUESTIONS,MISSING_DOCUMENT}

期望的结果:

Other Questions, Missing Document

我尝试了以下方法,但它向第一个和最后一个字符添加了 space,那么我怎样才能达到上面想要的结果?

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

您可以使用

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

an SQL fiddle

,(\S) 正则表达式将匹配逗号并将其后的任何非白色 space 字符捕获到第 1 组中,并替换 , ,即逗号,space 和第 1 组值。然后,[{}_]+ 正则表达式将匹配所有出现的一个或多个 {}_ 字符,并且 regexp_replace 将用 space,并且 trim 将删除 leading/trailing spaces.

只需在 Regex 中删除 space,''-->'',替换为:

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

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