gpt4 book ai didi

regex - 不要提取错误的子串/数字

转载 作者:行者123 更新时间:2023-11-29 13:13:44 26 4
gpt4 key购买 nike

我在 PostgreSQL 中处理地址数据,需要提取 4 位邮政编码。

我有一些地址,例如'UNIT 1503 CENTER RD CLAYTON VIC 3168 1503, AU'其中“3168”对应于我的邮政编码。

我尝试过的所有操作都将“1503”提取为错误的邮政编码。在其余地址中,不是邮政编码的 4 位数字(例如“1503”)在地址中出现了两次。在大多数情况下,第二个数字出现在逗号之前(但我不确定是否所有情况都是如此)。

以下代码为我提供了一个包含所有 4 位数字的列表:

select array_to_string(regexp_matches('1503 CENTRE RD CLAYTON VIC 3168 1503, AU', '\m[0-9]{4}\M', 'g'), '')

但是当我更新列“postal_code”时,只使用了第一行。

我需要一个代码来首先检查是否有多个 4 位数字。如果是这种情况,我需要执行以下规则(我不知道如何执行):“如果字符串中有一个以上的4位数字,只提取唯一的数字(3168);去掉出现两次的数字”。

最佳答案

你快到了。

with t(id,x) as (values
(1,'1503 CENTRE RD CLAYTON VIC 3168 1503, AU'::text),
(2,'1111 2222 3333 1111'))
select id, n[1]
from t, regexp_matches(x, '\m\d{4}\M', 'g') as n
group by id, n[1]
having count(*) = 1; -- Check for uniqueness

关于regex - 不要提取错误的子串/数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51638644/

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