正则表达式解析地址不包括最后的 apt 或 suite
regex parsing address to not include apt or suite at end
我有许多地址需要相互匹配 (mother/children) 有些地址在行尾有 apt、suite 等 - 一直在寻找方法来获取整行 w/o 最后一部分-
with addy as (select '22 W JAMESTOWN ST APT 22' as addy from dual union
select '22 W JAMESTOWN ST 22' as addy from dual)
select addy.*,regexp_substr(addy,'(\d*)(\D*)(\s)',1,1,'i') as no_ from addy;
最终结果应为:22 W JAMESTOWN ST
这是在oracle中-前瞻功能似乎不起作用-
'/.+?(?=APT)/' 无效
第一行有效,第二行无效。任何输入表示赞赏 - TIA
劳伦斯
代替REGEX_SUBSTR
,您可以尝试REGEX_REPLACE
删除地址末尾的额外信息。
查询
WITH
addy
AS
(SELECT '22 W JAMESTOWN ST APT 22' AS addy FROM DUAL
UNION
SELECT '22 W JAMESTOWN ST 22' AS addy FROM DUAL)
SELECT addy.*, REGEXP_REPLACE (addy, '\s?(APT)?\s?\d+$') AS no_
FROM addy;
结果
ADDY NO_
___________________________ ____________________
22 W JAMESTOWN ST 22 22 W JAMESTOWN ST
22 W JAMESTOWN ST APT 22 22 W JAMESTOWN ST
我有许多地址需要相互匹配 (mother/children) 有些地址在行尾有 apt、suite 等 - 一直在寻找方法来获取整行 w/o 最后一部分-
with addy as (select '22 W JAMESTOWN ST APT 22' as addy from dual union
select '22 W JAMESTOWN ST 22' as addy from dual)
select addy.*,regexp_substr(addy,'(\d*)(\D*)(\s)',1,1,'i') as no_ from addy;
最终结果应为:22 W JAMESTOWN ST 这是在oracle中-前瞻功能似乎不起作用- '/.+?(?=APT)/' 无效
第一行有效,第二行无效。任何输入表示赞赏 - TIA 劳伦斯
代替REGEX_SUBSTR
,您可以尝试REGEX_REPLACE
删除地址末尾的额外信息。
查询
WITH
addy
AS
(SELECT '22 W JAMESTOWN ST APT 22' AS addy FROM DUAL
UNION
SELECT '22 W JAMESTOWN ST 22' AS addy FROM DUAL)
SELECT addy.*, REGEXP_REPLACE (addy, '\s?(APT)?\s?\d+$') AS no_
FROM addy;
结果
ADDY NO_
___________________________ ____________________
22 W JAMESTOWN ST 22 22 W JAMESTOWN ST
22 W JAMESTOWN ST APT 22 22 W JAMESTOWN ST