【问题标题】:Regex: extracting a house number from an address正则表达式:从地址中提取门牌号
【发布时间】:2018-12-03 20:31:41
【问题描述】:

我有以下模式:

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

并且只想得到以下结果(因为 Box 15、Bte 15 是箱号,而我只想要房子 nbr + 可能是附加到门牌号的字母):

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

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

我基本上假设如果数字后面的字母超过1个字符,则它属于箱号。例如,BTEBoite 的法语缩写,意思是Box。我意识到如果门牌号有 2 个字母(例如:11 AA),这可能是无效的,但我不知道解决方案,我认为它不会发生太多。

【问题讨论】:

标签: sql regex teradata


【解决方案1】:

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

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

regex101.com

【讨论】:

    猜你喜欢
    • 2021-03-29
    • 2020-04-11
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多