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

Oracle正则表达式:移除以.pas/.poc结尾的字符串及前置空格

Oracle正则移除指定后缀字符串的全局匹配实现

在Oracle环境中,要全局移除所有以.pas或.poc结尾的字符串及其前置空格,可通过REGEXP_REPLACE函数配合精准正则表达式,并开启全局替换模式来实现。

解决代码

SELECT REGEXP_REPLACE(
    'A.H.4.1.2.0000.pas A.H.4.1.2.0000.poc A.H.410000.poc A.H.420000.poc A.H.4.1.2.0000.Total A.H.4',
    '(^|\s)\S+\.(pas|poc)',
    '',
    1,
    0
) AS cleaned_string
FROM DUAL;

关键说明

  1. 正则表达式解析
    • (^|\s):匹配字符串开头或单个空格,确保选中完整的目标项(包含分隔用的前置空格)
    • \S+:匹配一个或多个非空格字符,精准定位后缀前的文件名部分
    • \.(pas|poc):匹配.pas或.poc后缀,覆盖两种目标格式
  2. 全局替换设置
    • REGEXP_REPLACE的第五个参数设为0,表示替换所有匹配到的实例(而非仅第一个)
  3. 原正则的问题
    • 原正则($|\s)(.*?)\.poc|(.*?)\.pas存在逻辑优先级问题,且未启用全局替换,导致仅匹配第一个实例;同时.*?非贪婪匹配可能捕获不必要内容,不如\S+精准。

运行上述SQL后,将得到预期结果:

A.H.4.1.2.0000.Total A.H.4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:03:23