postgresql : regexp_substr - 在出现的分隔符之间获取子字符串

postgresql : regexp_substr - get sub string between occurrence of delimiters

我有这些字符串:

[{"Name":"id","Value":"Window_Ex_kebklipecbcegiocpa_widget_open"
[{"Name":"id","Value":"Window_Ex_kebklipecbcegiocpa_widget_close"
[{"Name":"id","Value":"Window_Ex_kebklipecbcegiocpa_widget_mid_value"

我试图只提取第三个 _ 之后的部分,直到字符串的末尾(总是以 " 结尾)

widget_open
widget_close
widget_mid_value

我正在使用 postgresql,并想使用 regexp_substr 语法来提取它。 谢谢!

regexp_replace(data::text,'^([^_]+_){3}','')

你可以试试

select regexp_replace(data::text,'^([^_]+_){3}','')
  from (
      select 'one_two_three_four  s'::text as data 
      union select 'a_bb_ccc_dddd_eeee_ffff'
  ) data