我的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)
我想替换:
Other operating exp
=> Other operating expenses & taxes
Other operating expenses 0
=> Other operating expenses & taxes
我尝试了以下操作:
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)
我可以使用哪个正则表达式替换字符串中的完全匹配项?
答案 0 :(得分:1)
使用可选组(enses)?
=# select regexp_replace('Other operating expenses 0 (1600)', '(Other operating exp(enses)?)', 'Other operating expenses & taxes');
regexp_replace
-------------------------------------------
Other operating expenses & taxes 0 (1600)
(1 row)
=# select regexp_replace('Other operating exp (1600)', '(Other operating exp(enses)?)', 'Other operating expenses & taxes');
regexp_replace
-----------------------------------------
Other operating expenses & taxes (1600)
答案 1 :(得分:1)
使用涵盖以下两种情况的模式:
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)