Regex的新功能(最近已将它添加到DB2 for i中的SQL中)。我对不同的引擎一无所知,但研究表明它“基于POSIX扩展正则表达式”。
我想从地址中获得街道名称(第一个非数字词)。
例如
101 Main Street = Main
2/b Pleasant Ave = Pleasant
5H Unpleasant Crescent = Unpleasant
很抱歉,我没有论坛软件建议的不起作用的字符串。我什至不知道从哪里开始。我尝试了一些在搜索中找到的内容,但它们没有产生任何结果或第一个“单词”-即数字(101、2 / b,5H)。
谢谢
编辑:尽管对于许多驻地专家来说,IBM在DB2数据库家族上的regex实施看起来似乎太陌生,但我还是会继续提供一些更详细的信息,以防万一。帮助。
该要求的简单英文说明为:
基本/可接受:查找不包含数字或特殊字符的第一个单词/不间断字符串
高级/理想:找到第一个单词,该单词包含三个或更多字符,只能是字母和零或一个嵌入的破折号/连字符,而不能包含数字或其他字符。
其他示例(顶部的原始示例仍然有效)
190 - 192 Tweety-bird avenue = Tweety-bird
190-192 Tweety-bird avenue = Tweety-bird
Charles Bronson Place = Charles
190H Charles-Bronson Place = Charles-Bronson
190 to 192 Charles Bronson Place = Charles
第二次修改: 在互联网上闲逛并尝试发现的每一个模糊的连接表达,我偶然发现了this one:
[a-zA-Z]+(?:[\s-][a-zA-Z]+)*
实际上效果很好-它提供了街道名称和街道类型,经过反思实际上可以满足我的目的,也可以单独使用街道名称(我可以轻松地将常用缩写-从RD扩展为ROAD-即时添加) 。
示例SQL:
select HAD1,
regexp_substr(HAD1, '[a-zA-Z]+(?:[\s-][a-zA-Z]+)*')
from ECH
where HEDTE > 20190601
样本输出
Ship To REGEXP_SUBSTR
Address
Line 1
32 CHRISTOPHER STREET CHRISTOPHER STREET
250 - 270 FEATHERSTON STREET FEATHERSTON STREET
118 MONTREAL STREET MONTREAL STREET
7 BIRMINGHAM STREET BIRMINGHAM STREET
59 MORRISON DRIVE MORRISON DRIVE
118 MONTREAL STREET MONTREAL STREET
MASON ROAD MASON ROAD
我知道这不完全是我问的问题,所以对任何可以这样做但忠实地遵循原始请求的人表示歉意。
答案 0 :(得分:0)
不确定这是否符合Posix的要求,但是可以使用以下方法:Warning FailedCreatePodSandBox 16s kubelet, srv1 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "b85728b51a18533e9d57f6a1b1808dbb5ad72bff4d516217de04e7dad4ce358d" network for pod "dpl-6f56777485-6jzm6": NetworkPlugin cni failed to set up pod "dpl-6f56777485-6jzm6_default" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.16.1/24
,例如here。
脚本假定第一个块是建筑物的编号,第二个块是街道的名称,最后一个块是^[\w\/]+?\s((\w+\s)+?)\s*\w+?$
。
这也应该满足街道名称中带有空格的情况。
答案 1 :(得分:-1)
使用以下正则表达式与您的示例匹配:
(?<=[^ ]+ )[^ ]*[ ]