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

Athena查询优化:仅当最后段含数字时截取分隔符前内容

Athena URL字符串的条件正则替换方案

直接使用带正向预查的正则表达式,实现仅当URL最后一个冒号后的部分包含数字时删除该段内容,否则保留原URL的需求:

SELECT regexp_replace(url, ':(?=[^:]*\\d)[^:]*$', '') AS new_url FROM table;

正则逻辑说明

  • ::匹配字符串中最末尾的冒号(正则贪婪特性确保匹配最后一个)
  • (?=[^:]*\\d):正向预查断言,验证冒号后续内容(直到字符串结尾)至少包含一个数字,[^:]*匹配任意非冒号字符
  • [^:]*$:匹配冒号后到结尾的所有非冒号字符
  • 只有当预查条件满足(最后一段含数字)时才执行替换,不满足则原字符串保持不变

示例验证

假设输入URL及对应输出:

  • 输入:https://example.com:8080/api → 输出:https://example.com
  • 输入:https://example.com:abc/api → 输出:https://example.com:abc/api
  • 输入:ftp://test:123xyz → 输出:ftp://test

原语句问题说明

你之前使用的regexp_replace(url, ':[^:]*$', '')会无条件匹配并删除最后一个冒号后的所有内容,没有添加数字存在的判断条件,因此无法满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:23:16