You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres regexp_replace:如何移除指定格式的整行内容?

PostgreSQL regexp_replace 移除特定格式整行内容

需要移除所有符合「[任意字母数字别名].dataMain AS [对应别名]__dataMain,」格式的整行内容,别名由字母数字组成(如m、n、m2等)。

示例输入

n.dataPrev AS n__dataPrev,
n.dataMain AS n__dataMain,
m.dataPrev2 AS m__dataPrev,
m.dataMain AS m__dataMain,
m.dataNext2 AS m_dataNext2

期望输出

n.dataPrev AS n__dataPrev,
m.dataPrev2 AS m__dataPrev,
m.dataNext2 AS m_dataNext2

错误尝试及输出

用户原语句:

select regexp_replace(
'n.dataPrev AS n__dataPrev, n.dataMain AS n__dataMain, m.dataPrev2 AS m__dataPrev, m.dataMain AS m__dataMain, m.dataNext2 AS m_dataNext2',
'[^:\s]+dataMain(\S+)', '');

错误输出:

n.dataPrev AS n__dataPrev,
n.dataMain AS 
m.dataPrev2 AS m__dataPrev,
m.dataMain AS m__dataMain,
m.dataNext2 AS m_dataNext2

正确解决方案

正确的正则需要精准匹配整行目标内容,同时启用换行敏感和全局替换标志:

SELECT regexp_replace(
    'n.dataPrev AS n__dataPrev,
n.dataMain AS n__dataMain,
m.dataPrev2 AS m__dataPrev,
m.dataMain AS m__dataMain,
m.dataNext2 AS m_dataNext2',
    '^\w+\.dataMain AS \w+__dataMain,\s*$', '', 'gn'
);

正则表达式说明

  • ^:匹配每行的开头位置
  • \w+:匹配1个及以上字母数字(对应别名部分)
  • \.dataMain AS :匹配固定的.dataMain AS 文本
  • \w+__dataMain,:匹配对应别名加__dataMain,的后缀格式
  • \s*$:匹配行尾的任意空白字符(包含换行符)
  • 标志g:执行全局替换,处理所有匹配项
  • 标志n:让^和$匹配每行的首尾(默认匹配整个字符串的首尾)

内容的提问来源于stack exchange,提问作者LuFFy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:51:14