繁体   English   中英

正则表达式:从地址中提取门牌号

[英]Regex: extracting a house number from an address

我有以下几种模式:

  1. 13 R 2
  2. 48 B / 5
  3. 42 B
  4. 42B
  5. 303方框15
  6. 303 Bte 15
  7. 303 B Bt 15

并且只希望得到以下结果(因为Box 15,Bte 15是箱号,而我只希望房屋nbr +可能附在房屋号上的字母):

  1. 13 R 2
  2. 48 B / 5
  3. 42 B
  4. 42B
  5. 303
  6. 303
  7. 303 B

使用正则表达式可以吗? 我尝试了以下操作: REGEXP_SUBSTR(my_string_variable, '^\\d+(\\s*\\w$)?') 但是,这仅适用于模式3-5,不适用于前2个和最后一个模式。 regex删除$将错误地“剥离”模式5和6的第一个字母。

我基本上假设,如果数字后面的字母超过1个字符,则它属于盒号。 例如, BTEBoite的法语缩写,意为Box 我知道,如果门牌号包含2个字母(例如11个AA),这可能是无效的,但是我不知道解决方案,因此我认为这种情况很少发生。

这将删除: 一个空格,后跟一个大写字母,然后至少一个小写字母,然后是一个可选空格,后跟任意数量的数字

RegExp_Replace(house_number, '\s[A-Z][a-z]+\s+\d+$')

参见regex101.com

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM