gpt4 book ai didi

regex - Oracle 正则表达式中的前瞻

转载 作者:行者123 更新时间:2023-12-05 00:30:24 27 4
gpt4 key购买 nike

我遇到了 Oracle 正则表达式的问题。我在不同的表中有很多电话号码。现在我的任务是统一它们。所以我去掉了所有的空格、下划线、减号等等。但随后棘手的部分来了——起初看起来很容易。

有带国际代码和不带国际代码的数字,例如0046812345678 和 0812345678。所以我想用'0046'替换一个(!)前导零。我认为 ^0(?=[1-9]) 可以完成这项工作,但 Oracle 似乎认为前瞻是无用的。(^0)(1|2|3|4|5|6|7|8|9) 也不起作用(或 (^01|02|03|04|05|06|07|08|09) 就此而言),因为它会替换第一个非零数字并将 0812345678 变成 004612345678(因此,第一个“8”消失了)。

我搜索并尝试了很长一段时间,但无法提出更多可能性。任何帮助将不胜感激。提前致谢!

最佳答案

您需要将第一个 1-9 添加到结果中,以便只匹配以单个 0 开头的数字。为了保留第一个 1-9,我们捕获它(使用括号)并将其添加到替换部分(使用 \1 )。这似乎有效:

select regexp_replace('0812345678', '^0([1-9])', '0046\1') from dual;

结果: 0046812345678

关于regex - Oracle 正则表达式中的前瞻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16102471/

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