regex_replace,仅替换整个单词

regex_replace,仅替换整个单词,regex,postgresql,Regex,Postgresql,我的PostgreSQL表中有以下行: kpi_old --------------------------------- Other operating exp (1200) Other operating exp (1400) Other operating exp (1600) Other operating expenses 0 (1200) Other operating expenses 0 (1400) Other operating expenses 0 (1600) 我想替换

我的PostgreSQL表中有以下行:

kpi_old
---------------------------------
Other operating exp (1200)
Other operating exp (1400)
Other operating exp (1600)
Other operating expenses 0 (1200)
Other operating expenses 0 (1400)
Other operating expenses 0 (1600)
我想替换:

  • 其他营业费用
    =>
    其他营业费用和税费
  • 其他运营费用0
    =>
    其他运营费用和税费
我尝试了以下方法:

SELECT
"kpi_old",
regexp_replace("kpi_old", '(Other operating exp)','Other operating expenses & taxes') as "kpi_new"
Other operating expenses & taxes (1200)
Other operating expenses & taxes (1400)
Other operating expenses & taxes (1600)
Other operating expenses & taxesenses 0 (1200)
Other operating expenses & taxesenses 0 (1400)
Other operating expenses & taxesenses 0 (1600)
问题是,它返回以下内容:

SELECT
"kpi_old",
regexp_replace("kpi_old", '(Other operating exp)','Other operating expenses & taxes') as "kpi_new"
Other operating expenses & taxes (1200)
Other operating expenses & taxes (1400)
Other operating expenses & taxes (1600)
Other operating expenses & taxesenses 0 (1200)
Other operating expenses & taxesenses 0 (1400)
Other operating expenses & taxesenses 0 (1600)
我可以使用哪个正则表达式替换字符串中的精确匹配?

使用可选组
(ENSE)?


使用涵盖以下两个方面的模式:

SELECT regexp_replace(
          kpi_old,
          'Other operating exp(enses 0)?',
          'Other operating expenses & taxes'
       )
FROM mytab;

             regexp_replace              
-----------------------------------------
 Other operating expenses & taxes (1200)
 Other operating expenses & taxes (1400)
 Other operating expenses & taxes (1600)
 Other operating expenses & taxes (1200)
 Other operating expenses & taxes (1400)
 Other operating expenses & taxes (1600)
(6 rows)