gpt4 book ai didi

regex - 使用 oracle 正则表达式删除前缀和后缀

转载 作者:行者123 更新时间:2023-12-01 13:00:01 25 4
gpt4 key购买 nike

我有一些带有前缀和后缀的记录(可能有也可能没有)。我正在尝试计算将始终返回参数化值的 REGEXP_REPLACE

到目前为止我的尝试是:

with teste as (
select '+123145@domain.com' as num from dual
union
select '0054321@domain.com' as num from dual
union
select '006789' as num from dual
union
select '+9876' as num from dual
union
select '13579@domain.com' as num from dual
union
select '123456789' as num from dual
)
select REGEXP_REPLACE(num,'^00(.*)\@.*$|^\+(.*)\@.*$','\1') from teste

但还不够。

输出应该是:

num
12345
54321
6789
9876
13579
123456789

最佳答案

在这里试试这个

REGEXP_REPLACE(num,'^(00|\+)?(\d*)(\@.*)?$','\2')

在这里查看 online at Regexr

我不确定 Oracle regex 能做什么。关键点可能是 \d 表示数字,如果这不起作用,请将 \d 替换为 [0-9]

(?:) 是非捕获组。内部模式未存储在捕获组中,因此您始终可以替换为第一个捕获组 \1

我还在非捕获组之后使用 | 将您的替代方案更改为使用 ? 的可选部分。 “或”中的两个括号导致结果有时在第 1 组(当第一个备选方案匹配时)有时在第 2 组(当第二个备选方案匹配时)

关于regex - 使用 oracle 正则表达式删除前缀和后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6994058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com